Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Drzewko parent_id - menu rozwijane
Forum PHP.pl > Forum > PHP
quality
Witam.

Siedzę od dłuższego czasu nad zrobieniem drzewa kategorii.
Przeczytałem chyba wszystkie posty dotyczące tego tematu.
Jednak nadal mnie dręczy jedna sytuacja.

Jak rekurencyjnie zrobić menu rozwijane na bazie drzewka ID | PARENT_ID | GLEBIA | NAZWA ?


Może ktoś mi pomoc bo już nie mogę nawet myślec tongue.gif

Pozdrawiam.

Coś wykombinowałem.

Tylko nie wiem jak tą funkcję przerobić żeby wywoływała się rekurencyjnie, bo w obecnej postaci są 3 pętle i tyle może być zagłębień.
Aha i moje id pobierane metodą $_GET wygląda np przy 3 zaglebieniach ?id=4,6.

Oto kod:
  1. <?php
  2. public function pokazMenuCC($gg)
  3. {  
  4. $ex = explode (",",$_GET['id']);
  5. echo count($ex);
  6. print_r ($ex);
  7. $odstep="&nbsp;";
  8. //for($i=0; $i < count($ex); $i++)
  9. //{  
  10.  
  11. $question="SELECT * FROM `kategorie` WHERE `rodzic`= '0';";
  12. $results=mysql_query($question);
  13. while($row=mysql_fetch_array($results)) 
  14. {
  15.  $dane .= $odstep.'<a href="?id='.$row['id'].'">'.$row['pl'].'</a><Br>';
  16. if($ex[0]==$row['id'])
  17. {
  18. $question2="SELECT * FROM `kategorie` WHERE `rodzic`= '".$ex[0]."';";
  19. $results2=mysql_query($question2);
  20. while($row2=mysql_fetch_array($results2)) 
  21. {
  22. $dane .= $odstep.''.$odstep.'<a href="?id='.$row2['id'].'">'.$row2['pl'].'</a><Br>';
  23. if($ex[1]==$row2['id'])
  24. {
  25. $question3="SELECT * FROM `kategorie` WHERE `rodzic`= '".$ex[1]."';";
  26. $results3=mysql_query($question3);
  27. while($row3=mysql_fetch_array($results3)) 
  28. {
  29. $dane .= $odstep.''.$odstep.'<a href="?id='.$row3['id'].'">'.$row3['pl'].'</a><Br>';
  30. }
  31. }
  32. }
  33. }
  34. //}
  35. }
  36. return $dane;
  37. }
  38. ?>
tommy4
za dużo kombinujesz.

  1. <?php
  2. function pokazkategorie($kategoria = 0, $lev = 0)
  3. {
  4. $sql = mysql_query("SELECT * FROM kategorie WHERE parent = $kategoria");
  5. while($row = @mysql_fetch_array($sql))
  6. {
  7. pokazkategorie($row['id'], ++$lev);
  8. }
  9. }
  10. pokazkategorie();
  11. ?>


Coś w tym stylu, w pętli while jeszcze dajesz wyświetlanie, $lev pomoże ci w robieniu poziomów, podpoziomów, etc.
webdice
Dodam że takie tworzenie drzewa kategorii jest strasznie nie efektywne, im więcej masz (pod)kategorii tym skrypt będzie działał wolniej. Proponuje Ci przeczytać ten artykuł. http://artykuly.zyxist.com/czytaj.php/drzewa_w_php_i_mysql, brakuje w tym artykule paru istotnych elementów, ale wszystko jest do dopisania.
quality
Widziałem ten artykuł, czytałem go z 10 razy.

Myślałem o tym dużo nawet kombinowałem, ale tam zrobić takie menu jak chce to w ogóle nie wiem jak zrobić.
Może ma ktoś jakiś skrypt , pomoc ?
Chętnie poczytam.

Poza tym przy tym drzewku co mówisz to nawet jak sie chcę dodać kategorie czy nawet sortowanie zrobić kategorii to trzeba całe drzewo przepisać.

Nie wiem już sam.

Ale jak będę mógł zrobić menu rozwijane jak w oscommerce to spróbuje.

Proszę o rade.

Pozdrawiam

Cytat(tommy4 @ 9.10.2007, 18:47:44 ) *
za dużo kombinujesz.

  1. <?php
  2. function pokazkategorie($kategoria = 0, $lev = 0)
  3. {
  4. $sql = mysql_query("SELECT * FROM kategorie WHERE parent = $kategoria");
  5. while($row = @mysql_fetch_array($sql))
  6. {
  7. pokazkategorie($row['id'], ++$lev);
  8. }
  9. }
  10. pokazkategorie();
  11. ?>


Widzę że to działa, ale tylko przy wyświetleniu całego drzewa.
A jak zrobić z tego menu rozwijane ?
Jakoś nie mogę sobie tego wyobrazić.
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.