Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie wszystkich wierszy z MySQL przez pętle w PHP
Forum PHP.pl > Forum > PHP
krzysiek9394
Witam, zamierzam pobrać i wyświetlić wszystkie wiersze z MySQL (a dokładnie kolumnę tresc z każdego wiersza). Napisałem taki kod w PHP:
  1. <?php
  2. $zapytanie = mysql_query("SELECT * FROM newsy");
  3. $ilosc = mysql_num_rows($zapytanie);
  4.  
  5. for($x=1;$x<$ilosc;$x++)
  6. {
  7. $y = $x;
  8. if($ostatnie_id == $x)
  9. {
  10. $x++;
  11. }
  12. $zapytanie = mysql_query("SELECT * FROM newsy WHERE id='$x'");
  13. $news = mysql_fetch_array($zapytanie);
  14. if($news['id'] == '')
  15. {
  16. while($news['id'] == '')
  17. {
  18. $y++;
  19. $zapytanie = mysql_query("SELECT * FROM newsy WHERE id='$x'");
  20. $news = mysql_fetch_array($zapytanie);
  21. }
  22. echo $news['tresc'];
  23. $ostatnie_id = $news['id'];
  24. }
  25. ?>

MySQL(newsy):
nazwa_kolumny: zawartosc(w kolejnosci, wiersze po przecinku)
id : 1,3,4,23,46
tresc : nr1,nr3,nr4,nr23,nr46

I nie wiem czemu, ale nie pokazuje mi ostatniego wiersza (nr46). Ktoś mi podpowie czemu?
erix
A nie możesz jak człowiek zrobić przez while, tylko pobierasz liczbę mysql_num_rows + for...?
Void
Nie pokazuje ostatniego wiersza bo w pętli for sprawdzasz czy $x jest mniejsze od liczby rekordów, a nie mniejsze lub równe (inkrementując przy tym $x od 1 a nie od 0).

Czyli zamiast
  1. for($x = 1; $x < $ilosc; $x++)

możesz dać
  1. for($x = 1; $x <= $ilosc; $x++)
lub
  1. for($x = 0; $x < $ilosc; $x++)

ale tak jak pisał ~erix lepiej skorzystać z pętli while
viking
A do tego te selecty w pętli. Co ty chcesz wybrać?
  1. $result = mysql_query("select * from newsy ORDER BY id ASC");
  2. while ($row = mysql_fetch_object($result)) {
  3. echo $row->id;
  4. echo $row->tresc;
  5. }
krzysiek9394
Wielkie dzięki za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.