Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla w pętli do n-poziomu
michaf1994
post 6.12.2014, 21:15:31
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 2
Dołączył: 17.07.2014
Skąd: Wielkopolska

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


Cześć wszystkim
Mam tabelę w bazie danych `kategorie`.

Oto struktura:
ID|NAZWA|RODZIC|POZIOM
--|-------|--------|---------
1 |Ogród | 0| 1
2 |Salon | 0| 1
3 |Krzesła| 1| 2
4 |Fotele | 2| 2
5 |Drewno| 3| 3
5 |Plastik | 3| 3

I teraz chcę zrobić <select> z wyborem kategorii. Jak dynamicznie robić pętlę w pętli do n poziomu?
Chodzi o to, że może być nawet do 100 poziomów i dynamicznie miałoby mi samo się tworzyć w kodzie wtedy.
Przykład dla poziomu 3 to:

while() {
while() {
while() {
}
}
}
Go to the top of the page
+Quote Post
nospor
post 6.12.2014, 21:29:02
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze: poczytaj o rekurencji
Po drugie i PRZEDEWSZYSTKIM: poczytaj o strukturach drzewiastych np drzewka IP bo to co masz to najgorsze z mozliwych rozwiazan


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michaf1994
post 6.12.2014, 23:04:37
Post #3





Grupa: Zarejestrowani
Postów: 67
Pomógł: 2
Dołączył: 17.07.2014
Skąd: Wielkopolska

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


Faktycznie. Przecież jest rekurencja. Dawno nie używałem jej więc nawet nie skojarzyło mi się.

Czy taki kod wyświetli to co bym chciał?

  1. function kategorie($poziom, $maxpoziom, $rodzic) {
  2. if ($poziom==$maxpoziom) {
  3. $result = mysql_query("SELECT * FROM `kategorie` WHERE `poziom`='{$poziom}' AND `rodzic='{$rodzic}'");
  4. while($row = mysql_fetch_assoc($result)) {
  5. echo $row['nazwa'].'<br />';
  6. }
  7. } else {
  8. $result = mysql_query("SELECT * FROM `kategorie` WHERE `poziom`='{$poziom}' AND `rodzic='{$rodzic}'");
  9. while($row = mysql_fetch_assoc($result)) {
  10. echo $row['nazwa'].'<br />';
  11. kategorie($poziom+1, $maxpoziom, $row['id']);
  12. }
  13. }
  14. }
Go to the top of the page
+Quote Post
nospor
post 7.12.2014, 16:01:03
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czy taki kod wyświetli to co bym chciał?
Sprawdz a sie dowiesz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 18.07.2025 - 04:43