Hallo Forum!
Ein sehr schönes dynamisches Menu, dass hier entstanden ist. Ich habe mich jetzt ein paar Tage damit beschäftigt und habe (wie schon vor mir Boris) gesehen, dass die Verschachtelung des Listen Menüs nicht stimmt. Irgend ein Browser wird da sicher mal Ärger machen. Ich habe etwas gebastelt, was eine saubere Verschachtelung erzeugt. Da ich aber eher der HTML-CSS-Mann bin, sieht meine Lösung auf der PHP-Seite nicht so sauber aus. Aber es funktioniert. Ich habe mir den ELSE-Zweig vorgeknöpft:
Code:
}else{
// bei diesem teil darf ich mich fuer die hilfe von jan bedanken
$level = 1;
$tree.= "\n<ul id=\"NewTree\">\n";
while($row = mysql_fetch_array($result)) {
if ($row['level'] > $level) $tree.= "\n<ul>\n"; // neuer level
else if ($row['level'] < $level) $tree.= str_repeat("\n</li>\n</ul>", $level-$row['level'])."</li>";
else if ($level > 1) $tree.= "</li>\n";
if ($row['lft'] == 1 && $row['rgt'] == 2 && $zaehler+1 < $count) $liclose = "</li>\n";
else $liclose = "";
$tree.= "<li class=\"li_level_".$row['level']."\"><a href=\"\" class=\"a_level_".$row['level']."\">".$row[2]."</a>".$liclose;
if ($level < 1 && $row['level'] < 1 && $zaehler+1 < $count) $li = "</li>\n";
$tree.= $li;
$li = "";
if (($row['level'] == 1) && ($row['level'] < $level)&&($row['rgt'] < 2)) $tree.= "</li>\n";
$level = $row['level'];
$zaehler++;
} // end while
$tree.= str_repeat("</li>\n</ul>\n", $level);
} // end if
Vielleicht kann ja jemand damit was anfangen.
Dann habe ich gemerkt, dass das löschen von Knoten ein Fehler in der "root_seq" erzeugt. Das führt dazu, dass die Reihenfolge in der "root_seq" durcheinander kommt und man nicht mehr sauber die Menüpunkte verschieben kann. Ich habe auf brutale Weise die SQL-Anweisung, in den IF- und ELSE-Zweigen, zum updaten der "root_seq" auskommentiert:
Code:
$sql = "UPDATE node
SET root_seq = root_seq - 1
WHERE root_seq > ".$node[5];
// $result = mysql_query($sql, connectDB());
Das scheint zu funktionieren, aber testet lieber ich gebe keine 100%ige Garantie.
Grüße und Danke für das Tutorial
Heinz