Dynamisches Menue Nested Sets

Hallo liebe Community freunde ich habe jetzt schon so viele Fragen zu Nested Sets gelesen das ich mich um dieses Thema bemüht habe.
Ich habe das Modul Nested Sets gelesen. und habe dementsprechen die Datenbank aufgebaut:

CREATE TABLE node (
node_id int(10) unsigned NOT NULL auto_increment,
root_id int(10) unsigned NOT NULL default ‚0‘,
payload varchar(64) default NULL,
lft int(10) unsigned NOT NULL default ‚0‘,
rgt int(10) unsigned NOT NULL default ‚0‘,
PRIMARY KEY (node_id),
KEY root_id (root_id)
) TYPE=MyISAM AUTO_INCREMENT=5 ;

Daten für Tabelle node

INSERT INTO node VALUES (1, 1, ‚A‘, 1, 8);
INSERT INTO node VALUES (2, 1, ‚B‘, 2, 7);
INSERT INTO node VALUES (3, 1, ‚C‘, 3, 4);
INSERT INTO node VALUES (4, 1, ‚D‘, 5, 6);

Ich habe auch einen Test eintrag duchgeführt!

So jetzt habe ich die MySQL abfrage gestartet womit alle Childs und Levels ausgegeben werden.

SELECT node1.payload,
IF ( node1.node_id = node1.root_id,
round( (node1.rgt - 2) / 2, 0),
round( ( (node1.rgt - node1.lft - 1) / 2), 0)
) AS children,
COUNT(*) AS level

FROM node AS node1,
node AS node2

WHERE node1.root_id = „.$id.“
AND node2.root_id = „.$id.“

AND node1.lft BETWEEN node2.lft AND node2.rgt

GROUP BY node1.LFT;

dabei werden alle Datenfelder ausgegeben.

Jezt stellt sich die eine Frage wie implementiere ich das Ganze in Php so das eine Menuestrucktur ausgegeben wird und die jeweiligen Childs eines Knotens jeweils nach einem klick angezeigt werden.

Die Abstände, die nach jedem Knoten kommen der seine Chils anzeigt
kann mann ganz leicht erstellen indem mann pro Level eine bestimmte anzahl an Leerzeichen oder andere Zeichen ausgibt:

while ($level node_id."&level=2>" . $row_hauptstrucktur->payload."
";
if (($_REQUEST[‚level‘] != 1) && ($_REQUEST[‚id‘]==$row_hauptstrucktur->node_id))
{
submenues($_REQUEST[‚id‘], $_REQUEST[‚level‘]);
}
}
}

Hier übergebe ich in einem Link die Level Nummer und die ID die die Childs dieses Nodes Ausgeben sollen.

Die Funktion Submenue soll die Jeweiligen Childs mit der ID 2 Anzeigen und diese als echo unter das Haupmenue mit der selben root_id anzeigen.

function submenues ($id, $level) {
$query_sub_menu =
"SELECT node1.payload,
IF ( node1.node_id = node1.root_id,
round( (node1.rgt - 2) / 2, 0),
round( ( (node1.rgt - node1.lft - 1) / 2), 0)
) AS children,
COUNT(*) AS level

FROM node AS node1,
node AS node2

WHERE node1.root_id = „.$id.“
AND node2.root_id = „.$id.“

AND node1.lft BETWEEN node2.lft AND node2.rgt

GROUP BY node1.LFT;";

$result_sub_menu = @mysql_query($query_sub_menu);
$num_sub_menu = @mysql_num_rows($result_sub_menu);
if ($num_sub_menu 2)
{
$count = 2;
while ($level == $count)
{

}
}
if ($level == $row_sub_menu->level)
{
if ($row_sub_menu->children == 0)
{
echo $row_sub_menu->payload . $row_sub_menu->children . $row_sub_menu->level ."
" ;
} else
{
$setlevel = $level + 1;
echo "".$row_sub_menu->payload."
";
}
}
}
}
}

So bis hierhin bin ich ge kommen!
ich habe aber leider das Problem wenn ich auf den link im 2. Level Drücke verschwinden die Elemente vom 2. Level und es kommen die Elemente vom 3. Level zum erscheinen. Dies soll aber nicht so sein wenn ich die elemente im 2. Level anklicke sollen die elemente im 2. Level und die Elemente im 3. Level zu sehen sein. Die elemente im 1. Level werden ja sowieso durch meine erste MySQL abrage angezeigt.

Ich würde mich freuen wenn viele Leute an diesem Eintrag teinehmen könnten damit hier ein gutes Tutorium entsteht. Ich bitte nur einträge zu machen die diesem Thema weiterhelfen und keine unsinnigen angaben zu machen!

Danke nochmals Gruß

acarweb