Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pętla w pętli
Forum PHP.pl > Forum > Przedszkole
Woytek950
Witam. Próbuję stowrzyć skrypt forum i natknąlem się na problem:
gdy próbuj wyświetlić kategorie to wiadomo że po kategoriach są fora i pętla while nie wystarcza,albo wystarcza a ja nie umiem sobie poradzić. Może chodzi o pętlę w pętli ?

  1.  
  2. while ($wiersz = mysql_fetch_array($wynik))
  3.   {
  4. echo $wiersz['kategoria']."<br />";
  5. //echo $wiersz['forum']."<br />" i tu jest problem, czy trzeba zrobić od nowa pętle razem z zapytanuiem ? ;
  6.  
  7.  
  8.   }
  9.  
  10.  

To jest przykład, trochę lipnie wytłumaczone ale mam nadzieję że zrozumiecie.


Max Damage
Robisz forum, gdzie po kategoriach są fora? Chyba nie łapie.
Powiedz jak to masz w tabeli, i co chesz dokładnie wyświetlić.
Woytek950
[ --------- forum ---------  --autor --  -- tematow -- ]
[ --------------------- Jakas kategoria ---------------]
[ Jakies forum                       nick                 32        ]
[ --------------------- Jakas kategoria ---------------]
[ Jakies forum                       nick                 32        ]



lol chyba zobrazowałem dokładnie. mam dwie tabele: kategorie i fora i chcę wyświetlić je:
przecież nie wyświetle nazwy forum i kategorii w jednej pętli
  1. while ($wiersz = mysql_fetch_array($wynik))
  2. {
  3.   echo $wiersz['nazwa_kategoria'];
  4. ]






Ref. Wiecie o co mi się rozchodzi czy mam to jeszcze inaczej objaśnić 
wizard144
Pisalem Ci gotowy skrypt ale mi sie odswiezyla przegladarka wiec juz nie pisze drugi raz. napisze po krotce jak to ma wyglądać

1. Pobierasz dane z tablicy z kategoriami
2. zliczasz rekordy (ilosc kategorii) -> mysql_num_rows()
3. Wchodzisz w petle while (x < ilosc_kategorii)
4. Pobierasz za pomocą mysql_result() idkategorii i jej nazwe
5. Wyswietlasz nazwe
6. Pobierasz dane z tablicy z forami WHERE kategoria='id_kategorii'
7. zliczasz rekordy (ilosc for) -> mysql_num_rows()
8. puszczasz to w petle while (y < ilosc_for)
9. Za pomoca mysql_result walisz sobie id nazwe forum i autora
9.1 wyswietlasz nazwe forum i autora
10. Pobierasz dane z tablicy z tematami WHERE forum='id_forum'
11. Zliczasz ilosc tematow
12. Wyswietlasz ilosc tematow
Woytek950
Nadal nie wiem jak to zrobić... 

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <meta name="author" content="mazuki" />
  6. <title>Bez tytułu 1</title>
  7. </head>
  8. <body>
  9. <?php
  10. include("config.php");
  11.  
  12. $query_1 = "SELECT * FROM kategorie";
  13. $result1 = mysql_query($query_1);
  14. $query_2 = "SELECT * FROM fora";
  15. $result2 = mysql_query($query_2);
  16.  
  17. $query_3 = "SELECT * FROM kategorie";
  18. $result3 = mysql_query($query_3);
  19. $ro3 = mysql_num_rows($result3);
  20.  
  21. $m = 0;
  22. while($m < $ro3)
  23. {
  24. while($row1 = mysql_fetch_array($result1))
  25. {
  26. echo "<div style=\"width 300px; border: 1px solid gray;\">".$row1['nazwa_kategoria']."</div>";
  27. while($row2 = mysql_fetch_array($result2))
  28. {
  29. echo "<div style=\"width 300px; border: 1px solid red;\">".$row2['nazwa_forum']."</div>";
  30. }
  31. }
  32.  
  33.  
  34.  
  35. $m++;
  36. }
  37. // echo "<table border='1' width='500'>";
  38. // echo "</table>";
  39. ?>
  40. </body>
  41. </html>

nakierujcie mnie na dobrą drogę... 
wizard144
  1.  
  2.  
  3. echo"<table>";
  4.  
  5. $z="SELECT * FROM kategorie";// Tabela z kategoriami ID | NAZWA
  6. $w=mysql_query($z) // wywolanie zapytania $z
  7.  
  8. $n=mysql_num_rows($w); // zliczanie rekordow zapytania $z (ilosc kategorii)
  9.  
  10.  
  11. for($x=0;$x<$n;$x++) // petla do przeszukiwania FOR
  12. {
  13. $id_kategorii=mysql_result($w,$x,"id"); // ID kategorii
  14. $nazwa_kategorii=mysql_result($w,$x,"nazwa"); // nazwa kategorii
  15.  
  16. echo"<tr><td colspan='3'>$nazwa_kategorii</td></tr>"; // wyswietlamy nazwe kategorii
  17.  
  18. $z1="SELECT * FROM fora WHERE kategoria='$id_kategorii'"; // Szukamy for które są w danej kategorii
  19. $w1=mysql_query($z1);// wykonujemy zapytanie $z1
  20.  
  21. $n1=mysql_num_rows($w1); // zliczamy ilość for danej kategorii
  22.  
  23.  
  24. for($y=0;$y<$n1;$y++) // przeszukujemy tematy
  25. {
  26. $id_forum=mysql_result($w1,$y,"id"); // pobieramy id forum
  27. $nazwa_forum=mysql_result($w1,$y,"nazwa"); // nazwe
  28. $auto_rforum=mysql_result($w1,$y,"autor"); // i autora
  29.  
  30. $z2="SELECT * FROM tematy WHERE forum='$id_forum' "; // Wybieramy wszystkie tematy które należą do tego forum
  31. $w2=mysql_query($z2) // wykonujemy zapytanie $z2
  32.  
  33. $n2=mysql_num_rows($w2); // zliczamy ilosc tematow
  34.  
  35. echo"<tr><td>$nazwa_forum</td><td>$autor_forum</td><td>$n2</td></tr>"; // wyswietlamy dane
  36.  
  37. }
  38.  
  39.  
  40. }
  41.  
  42. echo"</table>";
  43.  
  44.  


teraz struktura tabeli w bazie danych.

są 3 tabele.

1. kategorie - ID | NAZWA
2. fora - ID | NAZWA | KATEGORIA
3. tematy - ID | NAZWA | ... | ... | forum|

W tablicy tematy masz umieszczone nazwy i id tematow a takze do kazdego tematu musisz miec do jakiego forum nalezy. Wtedy skrypt powinien dzialac.
Woytek950
Dzięki Kolego  yahoo.gif Jesteś zajebisty !
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.