Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Jaki warunek postawić pętli ?
Forum PHP.pl > Forum > Przedszkole
Gruchol
Witam,
Chcę zrobić aby pętla wyświetlała pole "nazwa" z bazy tyle razy ile się znajduje w tabeli.
Nie mogę jednak wymyślić jaki warunek postawić.

Napisałem coś takiego jednak to nie za bardzo chce działać :

  1. <?php
  2. $nick = "test";
  3. $db = mysqli_connect('localhost', 'root', '', 'test');
  4. $zapytanie = mysqli_query($db, "SELECT * FROM test1 WHERE nick = '$nick'");
  5. $dane = mysqli_fetch_assoc($zapytanie);
  6. while($rekord = mysqli_fetch_array($zapytanie)) {
  7. $tresc = $dane["nazwa"];
  8. echo "$tresc";
  9.  
  10.  
  11. }
  12.  
  13. ?>


Z góry dziękuję i pozdrawiam.
SpiritCode
Fetchowanie danych przenosi Ci kursor na koniec tablicy.
Przed pętlą musisz cofnać kursor na początek zestawu danych albo w pętli dać while($dane) zamiast while($rekord = mysqli_fetch_array($zapytanie))
Gruchol
Zrobiłem to tak : while($dane)
I teraz wyświetla to nieskończoną ilość razy.
markuz
  1. foreach($dane as $rekord)
Gruchol
Jak zrobić aby pętla while wykonywała się tyle razy ile występuje pole nazwa w bazie ?
nospor
Co Wy tu motacie? Pole nazwa wystepuje tyle razy ile jest rekordow. Ni mniej nie wiecej. WIec masz przeleciec po rekordach i koniec.

  1. $nick = "test";
  2.  
  3. $db = mysqli_connect('localhost', 'root', '', 'test');
  4.  
  5. $zapytanie = mysqli_query($db, "SELECT * FROM test1 WHERE nick = '$nick'");
  6.  
  7.  
  8. while($rekord = mysqli_fetch_array($zapytanie)) {
  9.  
  10. $tresc = $rekord["nazwa"];
  11.  
  12. echo "$tresc";
  13.  
  14.  
  15.  
  16.  
  17.  
  18. }
Gruchol
Zrobiłem tak jak napisałeś jednak jest jeden problem.
Baza wygląda tak :

http://screenshooter.net/101736853/sbymvan

I nie wyświetla pola jeden.

Jest tylko

dwa
trzy
cztery
nospor
Na pewno na 100% zrobiles jak ja ci napisalem? Bo to ze ci znika jeden rekord to wina twojego pierwszego kodu. W moim kodzie, poprawilem wszystkie Twoje bledy.
Gruchol
Faktycznie działa.
Wielkie dzięki.
Możesz jeszcze tylko napisać gdzie był błąd ? Chciałbym wiedzieć na przyszłość.
nospor
Tutaj
$dane = mysqli_fetch_assoc($zapytanie);
pobierales rekord i nic z nim nie robiles wiec "znikal"
Gruchol
Mam jeszcze jedno pytanko.
Czy da się zrobić tabele w pętli ale aby powtarzały się same komórki bez tabeli ?
Zrobiłem coś takiego :

  1. echo <<<END
  2.  <center><table border="1" cellpadding="3" cellspacing="3" width ="500px" height ="50px">
  3. <tr>
  4. <td><center>$tresc</center></td>
  5. <td><center>$status1</center></td>
  6. </tr>
  7. </table> </center>
  8. END;

Tylko że teraz to brzydko wygląda bo każda komórka ma inną wielkość itp.
Da się zrobić aby w dalszym wykonywaniu pętli dodawało się tylko to ?

  1. <tr>
  2. <td><center>$tresc</center></td>
  3. <td><center>$status1</center></td>
  4. </tr>
nospor
No to dodawaj tylko to:
<tr>

<td><center>$tresc</center></td>

<td><center>$status1</center></td>

</tr>
Kto ci broni?
Nagłówki tabeli masz wygenerować przed pętlą a nie w petli. To chyba dość logiczne. Zaś zakonczenie tabeli </table> masz wygenerować po petli
Gruchol
Ehhh, że ja o tym nie pomyślałem.
Wielkie dzięki
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.