Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie wszystkich wierszy z MySQL przez pętle w PHP
krzysiek9394
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie możesz jak człowiek zrobić przez while, tylko pobierasz liczbę mysql_num_rows + for...?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Void
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 15
Dołączył: 2.02.2007

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


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
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


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. }


--------------------
Go to the top of the page
+Quote Post
krzysiek9394
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 4.09.2009

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


Wielkie dzięki za pomoc 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 Aktualny czas: 19.08.2025 - 19:49