Automatisk generering af treemenu
HejsaSidder her og skal ha lavet en treemenu.
I ved :
Menu 1
Menu 2
Menu 2.1
Menu 2.2
Menu 2.2.1
Menu 2.3
Menu 3
Menuen skal styres af en database med følgende felter : id, parent, description.
Da jeg ikke på forhånd ved hvor mange undermenuer der bliver kan jeg ikke løbe igennem databasen x antal gange.
Kan forestille mig at de skal gøres så min treeview funktion kalder sig selv et antal gange.
Det jeg mangler er ideen til hvordan jeg gør dette.
Har lavet lidt kode der godtnok løber igennem og skriver rigtig nok ud, men jeg mangler at kunne afslutte en treemenu igen.
Her er min nuværende kode :
function treeview_parent($webmenu_id){
$sql = "SELECT description, webmenu_id, parent FROM webmenu WHERE webactive = '1' AND parent = '$webmenu_id' ORDER BY sorting";
$result = dbQuery($sql);
while($row = dbFetchAssoc($result)){
extract($row);
if(treeview_is_child($webmenu_id)){
echo "<br>".$description." - ".$webmenu_id." - ".$parent."{";
treeview_parent($webmenu_id);
}else{
echo "<br>".$description." - ".$webmenu_id." - ".$parent;
}
}
}
function treeview_is_child($parent){
$sql = "SELECT description, webmenu_id, parent FROM webmenu WHERE webactive = '1' AND parent = '$parent' ORDER BY sorting";
$result = dbQuery($sql);
return dbNumRows($result);
}
treeview_parent();
Her er min nuværende output :
Webshop - 000 - {
Pålæg - 010 - 000
Brød - 020 - 000
Mælkeprodukter - 030 - 000{
Ost - 101 - 030{
Ost 45% - 103 - 101
Smør - 102 - 030
Kød - 040 - 000
Ønskede output :
Webshop - 000 - {
Pålæg - 010 - 000
Brød - 020 - 000
Mælkeprodukter - 030 - 000{
Ost - 101 - 030{
Ost 45% - 103 - 101}
Smør - 102 - 030}
Kød - 040 - 000}
Den endelige manu skal så se således ud :
Webshop
Pålæg
Brød
Mælkeprodukter
Ost
Ost 45%
Smør
Kød
Bliver selvfølgelig i den færdige version udviddet til en del mere, det er bare en lille smule test data jeg har i øjeblikket.
Det ender selvfølgelig op med at være flere end de 4 niveauer der er nu, ved ikke hvor mange, men det skal være muligt.
Håber i ved hvad det er jeg mener og har en ide/løsning til mig, for jeg har stirret mig lidt blind på det nu :-(
På forhånd tak
/Erik_A