Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Jak odebrać dane?
Forum PHP.pl > Forum > Przedszkole
Lion_87
Mam taki kod i chciałbym wyświetlić dane w tablicy lecz wyświetla mi się jeden rekord powtarzany tyle razy ile jest wyników zamiast wyświetlić każdy.

  1. <?php
  2. ...
  3.  function talica($polecenie)
  4.    {
  5.      $this->wynik = mysql_query($polecenie);
  6.      if(!$this->wynik) {return mysql_error();}
  7.      else {
  8.      return @mysql_fetch_assoc($this->wynik);
  9.      }
  10.    }
  11. ...
  12.  
  13. $zapytanie = "select id FROM tabela where blabla='lala'";
  14. $tematy = $baza->talica($zapytanie);
  15. for ($i=0; $i<$tematy_ile; $i++)
  16.    {
  17.     $id_see = stripslashes($tematy['id']);                              
  18.  
  19. $mes= <<<mes
  20. <li><a href=>
  21. <div class="forum10"><p>$id_see</p></div>
  22.  
  23. </a></li>
  24. mes;
  25. echo $mes;
  26.    }
  27. ?>


Jak poprawnie to zrobić?
KCG
Spróbuj while'em:
  1. <?php
  2. while ($tematy = $baza->talica($zapytanie)) {
  3. ...
  4. }
  5. ?>
Lion_87
Próbowałem ale wtedy wynik to była "nieskończoność" tematów.
KCG
Usuń @ sprzed mysql_fetch_assoc może pokaże jakiś błąd.
Ew. możesz spróbować zrobić to bez używania swoich funkcji (bezpośrednio mysql_query itd.), wtedy zobaczysz, czy jest okej, jeśli będzie to masz błąd gdzieś w swojej funkcji, mimo, że wydaje się poprawna.
ziqzaq
Robisz tylko raz fetch więc pobiera tylko jeden rekord z wyniku IMHO winksmiley.jpg
Przy założeniu że chcesz dostać całą tablicę na raz można np. tak:
  1. <?php
  2. ...
  3. function talica($polecenie)
  4.   {
  5.     $this->wynik = mysql_query($polecenie);
  6.     if(!$this->wynik) {return mysql_error();}
  7.     else {
  8.           $tabliczka = array();
  9.           while($wiersz = mysql_fetch_assoc($this->wynik)) $tabliczka[] = $wiersz;
  10.     return $tabliczka;
  11.     }
  12.   }
  13. ...
  14.  
  15. $zapytanie = "select id FROM tabela where blabla='lala'";
  16. $tematy = $baza->talica($zapytanie);
  17. for ($i=0; $i<$tematy_ile; $i++)
  18.   {
  19.    $id_see = stripslashes($tematy[$i]['id']);                              
  20.  
  21. $mes= <<<mes
  22. <li><a href=>
  23. <div class="forum10"><p>$id_see</p></div>
  24.  
  25. </a></li>
  26. mes;
  27. echo $mes;
  28.   }
  29. ?>

Ale głowy nie daję za powyższy kod winksmiley.jpg

Edit:
KCG napisał:
Cytat
while ($tematy = $baza->talica($zapytanie)) {

To się zapętli bo za każdym razem będzie wykonywane zapytanie do bazy i zwracany 1 wiersz z wyniku - oczywiście to jest uwaga do kodu z 1 postu. winksmiley.jpg
Lion_87
Zmieniłem trochę i jest teraz ok. smile.gif
Tak jest poprawnie.

  1. <?php
  2. ...
  3. function talica($polecenie)
  4.   {
  5.     $this->wynik = mysql_query($polecenie);
  6.     if(!$this->wynik) {return mysql_error();}
  7.     else {
  8.     return $this->wynik; //<- tu zmienilem ( bylo @mysql_fetch_assoc($this->wynik); )
  9.     }
  10.   }
  11. ...
  12.  
  13. $zapytanie = "select id FROM tabela where blabla='lala'";
  14. $tematy = $baza->talica($zapytanie);
  15. for ($i=0; $i<$tematy_ile; $i++)
  16.   {
  17.    $tematy_see = mysql_fetch_array($tematy); //<- tu dodałem
  18.    $id_see = stripslashes($tematy_see['id']);                              
  19.  
  20. $mes= <<<mes
  21. <li><a href=>
  22. <div class="forum10"><p>$id_see</p></div>
  23.  
  24. </a></li>
  25. mes;
  26. echo $mes;
  27.   }
  28. ?>


A co do Twojego kodu ~ziqzaq to tez działa.smile.gif
KCG
ziqzaq masz rację, nie zwróciłem uwagi/przeoczyłem, że tam też jest zapytanie do bazy, bo ja to robię w oddzielnych funkcjach 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.