Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] [mysql] pętla while, nadliczbowe wyniki
--Grzegorz--
post
Post #1





Goście







Witam,

mam pytanie - jak działa pętla WHILE w sytuacji, kiedy pobieram dane z kilku tablic MYSQL (SELECT .... FROM .... AS ....)?

Kiedy wykonałem pętle WHILE przy wyborze jednej tablicy, wszystko wyświetliło się prawidłowo:

  1. <?php
  2. $pytanie = "SELECT nazwa, kursy FROM osrodki";
  3. $wykonaj = mysql_query($pytanie);
  4. while ($wynik = mysql_fetch_assoc($wykonaj))
  5. {
  6.  echo $wynik['nazwa'].":<br>";
  7.  $kurs = explode(";", $wynik['kursy']);
  8.  foreach ($kurs as $k)
  9.  {echo $k."<br>";}
  10. }
  11. ?>


Ale kiedy próbowałem tego samego z dwiema tablicami, wynik wyświetlił mi się kilka(dziesiąt? set?) razy - w kółko.

  1. <?php
  2. $pytanieD = "SELECT o.nazwa, o.kursy, k.nazwa_kursu, k.id_kursu FROM osrodki as o, kursy
     as k"
    ;
  3. $wykonajD = mysql_query($pytanieD);
  4. while ($wynikD = mysql_fetch_assoc($wykonajD))
  5. {
  6.  echo $wynikD['nazwa'].":<br>";
  7.  $kurs = explode(";", $wynikD['kursy']);
  8.  foreach ($kurs as $k)
  9.  {echo $k."<br>";}
  10. }
  11. ?>


Gdzie popełniłem błąd?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
--Grzegorz--
post
Post #2





Goście







Dziękuję bardzo - pomogło (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Teraz pętla wykonuje się prawidłowo.

Chciałbym teraz przejść do następnego kroku, tzn. połączyć otrzymane rezultaty $k z odpowiednią 'nazwą_kursu' dobieraną wg klucza 'id_kursu". Inaczej mówiąc - chciałbym, żeby skrypt skojarzył otrzymane wyniki $k (pięciocyfrowe liczby) z odpowiednimi 'id_kursu' i przyporządkował im adekwatną 'nazwę_kursu'. Myślałem, że wystarczy tutaj warunek if:

  1. <?php
  2. $pytanie = "SELECT o.nazwa, o.kursy, k.nazwa_kursu, k.id_kursu FROM osrodki as o, kursy
     as k WHERE o.kursy=k.id_kursu"
    ;
  3. $wykonaj = mysql_query($pytanie);
  4. while ($wynik = mysql_fetch_assoc($wykonaj))
  5. {
  6.  echo $wynik['nazwa'].":<br>";
  7.  $kurs = explode(";", $wynik['kursy']);
  8.  foreach ($kurs as $k)
  9.  {
  10.  if ($k = $wynik['id_kursu'])
  11. {echo $k." - ".$wynik['nazwa_kursu']."<br>";}
  12.  }
  13. }
  14. ?>


...Ale to nie zadziałało. Nie zadziałało też "==", ani użycie pętli for. Gdzie się mylę?
Go to the top of the page
+Quote Post

Posty w temacie
- -Grzegorz-   [php] [mysql] pętla while   1.09.2007, 22:13:22
- - wipo   Błąd masz w zapytaniu. Pętla działa prawidłowo. W ...   2.09.2007, 08:43:39
- - -Grzegorz-   Dziękuję bardzo - pomogło . Teraz pętla wykonuje s...   2.09.2007, 09:28:41
- - Hazel   [PHP] pobierz, plaintext <?phpif ($k == $wy...   2.09.2007, 14:44:09
|- - -Grzegorz-   Cytat(Hazel @ 2.09.2007, 14:44:09 ) [...   3.09.2007, 08:09:13
- - Hazel   Prześlij mi wywołanie funkcji var_dump($wykon...   3.09.2007, 10:12:00
|- - -Grzegorz-   Cytat(Hazel @ 3.09.2007, 10:12:00 ) P...   3.09.2007, 12:28:07
- - Hazel   Nie bardzo wiem, co masz na myśli, mówiąc "sk...   3.09.2007, 18:53:39
- - -Grzegorz-   Cytat(Hazel @ 3.09.2007, 18:53:39 ) N...   4.09.2007, 08:50:33


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: 26.09.2025 - 04:44