Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Wykorzystanie tablicy wyników zapytania w pętli while
kolaborek
post 6.01.2014, 11:30:27
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.10.2010

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


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.

Ten post edytował kolaborek 6.01.2014, 11:51:49
Go to the top of the page
+Quote Post
maviozo
post 6.01.2014, 11:48:13
Post #2





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


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.

Ten post edytował maviozo 6.01.2014, 11:49:15
Go to the top of the page
+Quote Post
kolaborek
post 6.01.2014, 11:58:19
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.10.2010

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


O to mi chodziło. Dzięki wielkie wink.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 Wersja Lo-Fi Aktualny czas: 4.06.2025 - 18:02