Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Rozpoznanie ostatniego rekordu tablicy
pawelt
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


Witam serdecznie..
Mój problem jest banalny, ale nie wiem jak powinienem go rozwiązać.
Chodzi o to, że za każdym razem pobieram z bazy danych różną ilość rekordów w pętli while.
Po każdym imieniu dodaję przecinek i spację ', '
Problem pojawia się wraz z ostatnim rekordem, gdyż jak wiadomo zestaw znaków ', ' także się pojawia.

Niestety nie wiem jak rozpoznać, kiedy pobierany jest ostatni rekord - wtedy mógłbym napisać instrukcję if, aby wykluczyć wywoływanie dla niego zbędnych znaków.
Ale zapewne są też lepsze sposoby.
Proszę o poradę..


  1. if(mysqli_num_rows($result) > 0) {
  2. echo '(IMIONA: ';
  3. while($row = mysqli_fetch_array($result)) {
  4. echo $row['imie'] . ', ';
  5. }
  6. echo ')';
  7. }


Ten post edytował pawelt 17.11.2011, 00:22:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Policz, ile masz zwracanych rekordów, zapisz to do zmiennej np. 'ilość rekordów' i zamiast while() użyj for() dla zakresu od 1 do 'ilość rekordów-1' (i tam doklejaj przecinek), a rekord 'ilość rekordów' wyświetl już poza for(), bez przecinka (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
abort
post
Post #3





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Albo inaczej: pierwszy rekord pobierać i wyświetlać normalnie, a przed wyświetleniem następnych doklejać przecinek ze spacją.
Można jeszcze pętlę while wstawić do if'a (żeby się wykonała "if(mysqli_num_rows($result) > 1)"). Generalnie widziałbym to tak:

  1. $rows=mysqli_num_rows($result);
  2. if( $rows > 0) {
  3. echo '(IMIONA: ');
  4. $row = mysqli_fetch_array($result);
  5. echo $row['imie'];
  6. if ($rows>1) {
  7. while($row = mysqli_fetch_array($result)) {
  8. echo ', ' . $row['imie'];
  9. }
  10. echo ')';
  11. }


Ten post edytował abort 17.11.2011, 09:24:03
Go to the top of the page
+Quote Post
sannin
post
Post #4





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Najłatwiej za pętlą while daj:
Kod
$rest = substr("abcdef", 0, -2);  // returns "abcd"
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Rety, a po co takie kombinacje alpejskie?
  1. $first = true;
  2. while($row = mysqli_fetch_array($result)) {
  3. if (!$first) echo ', ';
  4. $first = false;
  5. echo $row['imie'];
  6. }
Go to the top of the page
+Quote Post
abort
post
Post #6





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


A na to nie wpadłem (IMG:style_emoticons/default/smile.gif) Proste i skuteczne, by nie powiedzeć genialne (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 07:52