Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Rozpoznanie ostatniego rekordu tablicy
pawelt
post 17.11.2011, 00:21:18
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
blooregard
post 17.11.2011, 00:42:15
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 smile.gif


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
abort
post 17.11.2011, 09:22:25
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 17.11.2011, 09:25:23
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 17.11.2011, 09:25:35
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. }


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
abort
post 17.11.2011, 09:34:45
Post #6





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

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


A na to nie wpadłem smile.gif Proste i skuteczne, by nie powiedzeć genialne smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 10:03