Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Jak odebrać dane?
Lion_87
post
Post #1





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


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ć?

Ten post edytował Lion_87 30.12.2008, 22:17:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
KCG
post
Post #2





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


Spróbuj while'em:
  1. <?php
  2. while ($tematy = $baza->talica($zapytanie)) {
  3. ...
  4. }
  5. ?>
Go to the top of the page
+Quote Post
Lion_87
post
Post #3





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Próbowałem ale wtedy wynik to była "nieskończoność" tematów.
Go to the top of the page
+Quote Post
KCG
post
Post #4





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


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.
Go to the top of the page
+Quote Post
ziqzaq
post
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


Robisz tylko raz fetch więc pobiera tylko jeden rekord z wyniku IMHO (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował ziqzaq 30.12.2008, 22:55:08
Go to the top of the page
+Quote Post
Lion_87
post
Post #6





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Zmieniłem trochę i jest teraz ok. (IMG:http://forum.php.pl/style_emoticons/default/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.(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
KCG
post
Post #7





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

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


ziqzaq masz rację, nie zwróciłem uwagi/przeoczyłem, że tam też jest zapytanie do bazy, bo ja to robię w oddzielnych funkcjach (IMG:http://forum.php.pl/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: 22.08.2025 - 12:31