Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Wykorzystanie tablicy wyników zapytania w pętli while
Forum PHP.pl > Forum > Przedszkole
kolaborek
Witam.

W formularzu chciałbym wykorzystać pole kombi w którym wyświetlane by były dane z tabeli MySQL (kolumna "sędzia"). Wszystko działa dobrze w pierwszym wierszu, natomiast kolejne wiersze są puste.


A tak wygląda kod:
  1. echo '<form>';
  2. $zapytanie = $pdo->prepare('select CONCAT (stanowisko.stanowisko_skrot," ",sedzia.imie, " ",sedzia.nazwisko) as sedzia from stanowisko join sedzia on stanowisko.id=sedzia.stanowisko_id order by sedzia.nazwisko');
  3. $zapytanie->execute();
  4.  
  5. for ($i = 1; $i <= 5; $i++ )
  6. {
  7. echo '<label for="Data">Data dyżuru <input type="date" id="Data" name="Data"/>
  8. </label>';
  9.  
  10.  
  11. echo '<label for="Sedzia"> Sędzia <select id="Sedzia" name="Sedzia">';
  12. while ($row = $zapytanie->fetch())
  13. {
  14. echo '<option>'.$row['sedzia'].'</option>';
  15. }
  16. echo '</select> </label>';
  17.  
  18.  
  19. echo'<label for="Protokolant">Protokolant <select id="Protokolant" name="Protokolant">
  20. <option value="1" selected label = "Jakowyś tam"/>
  21. </select>
  22. </label><br />';
  23.  
  24. };
  25.  
  26. // $zapytanie->closeCursor();
  27. echo '</form>';


Wydaje mi się, że przy kolejnych pętlach należałoby wrócić do początku tablicy $zapytanie, ale nie wiem jak to zrobić - reset($zapytanie) nie pomaga.
maviozo
Od razu po execute() wykonaj
Kod
$sedziowie=array();
while ($row = $zapytanie->fetch())
$sedziowie[]=$row['sedzia'];

Dopiero potem w kodzie odwołuj się:
Kod
foreach ($sedziowie as $sedzia) echo '<option>'.$sedzia.'</option>';
ewentualnie można sobie to opakować w funkcję i ją 3 razy wywołać.

Chociaż ja preferuję ściągnięcie całych wierszy do jednej tablicy i potem odwoływanie się do poszczególnych kolumn w razie potrzeby:
Kod
$wynik=$zapytanie->fetchAll(PDO::FETCH_ASSOC);

dlatego potem wystarczy
Kod
foreach ($wynik as $wiersz) echo '<option>'.$wiersz['sedzia'].'</option>';
ponieważ do tej tablicy mogę wracać wielokrotnie.
kolaborek
O to mi chodziło. Dzięki wielkie wink.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.