Mailinglisten-Archive |
* Marcel Beerta wrote: > Ich habe so aber das Problem, dass ich nur maximal 2 Menütiefen habe. Ich > hätte aber gern n menüebenen. So hab ich's momentan auch gelöst, aber > rekursiv wär's mir lieber :) Funktion traverse, die als Parameter die Startebene übergeben bekommt (also 0, weil select * from tbl where parent=0 gibt dir alle Elemente der ersten Ebene) plus eine Variable, an die es ein neues Array- Element anhängen soll. Diese gehst du in einer while-Schleife durch und baust jedes Mal ein neues Array-Element mit einer ID für Menu3 und dem Titel. Danach machst du -- innerhalb der while-schleife -- ein neues select, diesmal select * from tbl where parent=<id des aktuellen datensatzes> d.h. "Hat dieser Datensatz noch Unterelemente?". Wenn ja, rufst du die Funktion traverse erneut auf, allerdings als ID-Parameter die id des aktuellen Datensatzes und als Variable einfach $var["sub"] D.h. ungefähr so: function traverse($parentcheck, &$var) { -> select * from tbl where parent=$parentcheck while ( -- ) { $id = id von oberem select $tmparr = array("title" => titelausdb, "url" => urlausdb); -> select count(*) as anz from tbl where parent=$id if ($diesesanz > 0) { $tmparr["sub"] = array(); $var["eindeutigeID"] = $tmparr; traverse($id, $var["eindeutigeID"]["sub"]); } else { $var["eindeutigeID"] = $tmparr; } } } $menubaum = array(); traverse(0,$menubaum); Sollte funktionieren, kann aber auch sein, dass es Fehler enthält, ist nur schnell dahingewurschtelt. -- PHP Schulungen und | International PHP Conference Schulungsmaterial: | 05. - 07.11.2001 http://thinkphp.de/ | Astron Hotel, Frankfurt http://rent-a-phpwizard.de/schulungen.php | http://www.php-kongress.de/
php::bar PHP Wiki - Listenarchive