Hi,
ich will ein dynamisches Menü anhand einer Datenbank erstellen. Die Datenbank sieht folgendermaßen aus:
user | id | parent_id | Name
1 | 1 | 0 | Menü1
1 | 2 | 0 | Menü2
1 | 3 | 1 | Untermenü1 zu Menü1
1 | 4 | 1 | Untermenü2 zu Menü1
1 | 5 | 4 | Untermenü1 zu Untermenü2
usw.
Dazu habe ich mir folgende Klasse gebaut:
class CMS extends database {
function create_menu_tree ($user, $parentid = 0, $indent = 0) {
$final_list = array ();
$list = $this->get_menu_list ($user, $parentid);
// nun wird die liste abgearbeitet
foreach ($list as $listitem) {
$listitem["indent"] = $indent;
$final_list[] = $listitem;
$new_list = $this->create_menu_tree ($user, $listitem["id"], $indent + 1);
// wenn es Einträge für dieses Menü gibt
if (count ($new_list) > 0) {
$final_list = array_merge ($final_list, $new_list);
}
}
return $final_list;
}
function get_menu_list($user,$parentid) {
$result=$this->execute("SELECT * FROM content_kategorie WHERE user_id='".$user."' AND family_id='".$parentid."'");
if ($result) {
while($row=$this->fetch_row($result)) {
while(list($index,$wert)=each($row)) {
$list=array(array("id"=>$row[0], "user"=>$row[1], "site"=>$row[3], "name"=>$row[4]));
}
}
}
return $list;
}
}
Das Menü wird nun auch erstellt, aber immer nur für einen eintrag. d.h anhand der Tabelle oben sollte das Menü so aussehen:
Menü1
Untermenü1
Untermenü2
Untermenü1 zu Untermenü2
Menü2
Aussehen tut es aber so:
Menü2
Nehme ich den Eintrag Menü2 aus der DB raus wird es richtig geschrieben.
Woran könnte das liegen?
Danke und Gruß
Kerstel