Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+MYSQL]drzewko kategorii - menu - budujące listę wypunktowaną <UL><LI>
Forum PHP.pl > Forum > Przedszkole
mkdes
Przeszukałem już chyba cały internet i nic.
Szukam przykładu kodu dla budowania drzewka menu kategorii (które tworzy drzewko listy wypunktowanej <UL><LI>).
Kategorie pobieram z bazy (id, id_parent, nazwa).

Sam nieudolnie coś stworzyłem ale nie domyka mi znaczników <ul>.
Inwencja i rozum mi się skończył.
Proszę o pomoc, jakiś namiary, cokolwiek.
JaRoPHP
Cytat(mkdes @ 1.06.2007, 16:36:36 ) *
Sam nieudolnie coś stworzyłem ale nie domyka mi znaczników <ul>.
Najszybciej uzyskasz pomoc, jak pokażesz kawałek kodu. Wtedy użytkownicy będą mogli pokazać ci, gdzie wkradł się błąd.

Cytat(mkdes @ 1.06.2007, 16:36:36 ) *
Inwencja i rozum mi się skończył.
Mam nadzieję, że nie jest aż tak źle tongue.gif
mkdes
DZIAŁA
Ogromną wadą tego rozwiązania jest mnożenie zapytań do bazy.
Może ktoś ma pomysł jak przerobić to na tablice, coby jednym zapytaniem pobrać wszystkie kategorie.
  1. <?php
  2. function pokazWszystkieKategorieDrzewko($idKategorieNadrzedna, $ileKategorii){
  3.  
  4. echo'<ul>';
  5. $i = 1;
  6. $res = mysql_query('SELECT * FROM kategorie WHERE idKategorieNadrzedna='.$idKategorieNadrzedna.' ORDER BY kolejnosc ASC, nazwa ASC');
  7. while($row = mysql_fetch_assoc($res)){
  8.  
  9. echo'<li>';
  10. echo'<a href="index.php?idKategorieWybrana='.$row['idKategorie'].'">'.$row['nazwa'].'</a>';
  11.  
  12. //sprzwdzam czy ma podkategorie
  13. $res1 = mysql_query('SELECT COUNT(*) AS ileKategoriiFROM kategorie WHERE idKategorieNadrzedna='.$row['idKategorie']); 
  14. $row1 = mysql_fetch_assoc($res1);
  15. if($row1['ileKategorii'] > 0){//jeśli ma podkategorie
  16.  
  17. pokazWszystkieKategorieDrzewko($row['idKategorie'],$row1['ileKategorii']);
  18. }
  19. echo'</li>';
  20.  
  21. if($i == $ileKategorii){//jeśli sparsowałem ostatnią
  22. echo'</ul>';
  23. }else{
  24. $i++;
  25. }
  26. }
  27. }
  28.  
  29.  
  30. //WYWOŁANIE FUNKCJI
  31. //pobieram ilość kategorii głównych - tych z poziomem 0 jako nadrzędna
  32. $res = mysql_query('SELECT COUNT(*) AS ileKategoriiFROM kategorie WHERE idKategorieNadrzedna = 0'); 
  33. $row = mysql_fetch_assoc($res);
  34. pokazWszystkieKategorieDrzewko(0,$row['ileKategorii']); // (idKategorieNadrzedna, $ileKategorii)
  35. ?>
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.