Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Pętla w pętli, zapętlanie się wyników
glaacier
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 2.04.2009

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


Witam,

Mam oto taki problem. Jest tabela, któa wygląda następująco:


id, nazwa, pod, podnr

Rerokrdy w tej tabeli to wpisy menu z dwoma poziomami. Pierwszy poziom wyglada następująco:

id 1
nazwa JEDEN
pod 0
podnr 1 - taki sam jak id

Drugi poziom menu wygląda następująco:

id 2
nazwa JEDEN.1
pod 1
podnr 1


Zaciągam więc z tabeli wyniki:

Tak wygląda mój kod:


  1.  
  2. <ul>
  3.  
  4. <?
  5.  
  6. require_once("connect.php");
  7. $result = mysql_query("SELECT * FROM newsy WHERE cat=18 AND pod=0 ORDER BY poz", $con);
  8. if (!$result) {
  9. die('Problem: ' . mysql_error());
  10. }
  11.  
  12.  
  13. while ($row = mysql_fetch_array($result)) {
  14.  
  15. $ide = $row['id'];
  16. $idepod = $row['podnr'];
  17. $tytul = $row['subject'];
  18.  
  19.  
  20.  
  21.  
  22.  
  23. $podresult = mysql_query("SELECT * FROM newsy WHERE podnr=$ide AND pod=1 ORDER BY poz", $con);
  24. if (!$podresult) {
  25. die('Problem: ' . mysql_error());
  26. }
  27.  
  28.  
  29.  
  30.  
  31. while ($rowe = mysql_fetch_array($podresult)) {
  32.  
  33. $idepodpod = $rowe['podnr'];
  34. $podwyniki = $rowe["subject"];
  35. $podwyniki = "<li><a href=\"#\">$podwyniki $idepodpod</a></li>";
  36. }
  37.  
  38.  
  39. echo "<li><a href=podstrona.php?a=$ide&b=$ide#aktu >$tytul $ide</a>
  40.  
  41. <ul> $podwyniki </ul> </li>
  42. ";
  43.  
  44.  
  45. }
  46.  
  47. ?>
  48.  
  49.  
  50.  
  51.  
  52. </ul>
  53.  
  54.  



na czym polega problem. Otóż skrypt wykonuje pierwszą pętle while prawidłowo. Pokazuje wszystkie możliwe wyniki z tabeli, za to przy drugiej petli (tej pętli w pętli) pokazuje tylko jeden wynik, po prostu nie zapętla się tyle razy ile jest możliwych wyników w tabeli. Otrzymuje wynik taki:

JEDEN
jeden.1

DWA
dwa.1

TRZY
trzy.1

a chciałbym otrzymać:

JEDEN
jeden.1
jeden.2
jeden.3

DWA
dwa.1
dwa.2
dwa.3

TRZY
trzy.1
trzy.2
trzy.3

Będę wdzięczny za podpowiedź, co zrobić, żeby pętla druga zapętlała się tyle razy ile jest wyników w danej tabeli.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


rozumiem, że chodzi Ci o wielopoziomowe menu, w takim razie jest to problem drzewka kategorii, jest kilka rozwiązań na to np. drzewko lewo praw lub drzewko IP, ja osobiście polecam drzewko IP, aczkolwiek jeżeli jesteś bardzo początkujący to może Ci się to wydać za bardzo skomplikowane.

Jeżeli masz tylko 2 poziomy czyli tylko kategorie główne i podkategorie, to najprościej byłoby dodanie kolumny podkategorie w tabeli kategorie, i trzymać tam podkategorie w postaci zserializowanej tablicy, aczkolwiek takie rozwiązanie jest bardzo nieelastyczne i uniemożliwia wiele operacji mysql.
Go to the top of the page
+Quote Post

Posty w temacie


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: 27.12.2025 - 16:40