Fejlen opstår i din test() funktion.
Du definere:
$node1[$id] = new HTML_TreeNode(array('text' => "Referencer", 'link' => "test.php", 'expandedIcon' => $expandedIcon));
Hvor $id er sat til 5 ovenfor.
i foreach loopet gør du følgende
$nodel[$item['pid']] = &$node1[$item['parent']]->addItem(new HTML_TreeNode(array('text' => $item['page_name'], 'link' => "test.php?pid=".$item['pid'], 'expandedIcon' => $expandedIcon)));
men $item['parent'] er kun 5 ved den første, ved nr. 2 udtræk er den 18. (nok det der er den egentlige fejl)
så efter du har kørt addItem() ved det første child, så tilføjer du pludselig det andet child til en helt anden menu (parent), den med nr. 18.
Da alle dine childs jo burde have 5 da, det er hvad du henter med getMenu(), så må det være denne getMenu() funktion der fejler.
Jeg kan ikke lige sige dig hvorfor, da jeg ikke ved hvad din fetch() funktion gør
For øvrigt ville jeg lige rette i din test funktion, så den checker om child elementets parent egentlig er det du tilføjer den til
function test($array, $id=5)
{
$icon = 'folder.gif';
$expandedIcon = 'folder-expanded.gif';
$menu = new HTML_TreeMenu();
$node1[$id] = new HTML_TreeNode(array('text' => "Referencer", 'link' => "test.php", 'expandedIcon' => $expandedIcon));
$i=0;
foreach($array as $item)
{
echo($i);
$i++;
echo("<br>");
if($id == $item['parent'])
$nodel[$item['pid']] = &$node1[$item['parent']]->addItem(new HTML_TreeNode(array('text' => $item['page_name'], 'link' => "test.php?pid=".$item['pid'], 'expandedIcon' => $expandedIcon)));
}
$menu->addItem($node1[$id]);
$treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => '/imagesAlt2', 'defaultClass' => 'treeMenuDefault'));
$treeMenu->printMenu();
}
Hilsen
Martin Dybdal (Dybber)