Hmm..volgens mij doe ik het veel te moeilijk, maar ik kom er niet uit
Ik heb dus een Mambo-database met daarin menu items. Elk item heeft een parent. De items waarvan parent==0 zijn de hoofdmenu-items en verschijnen in een horizontale balk daarboven. De items waarvan parent!=0 verschijnen, al naar gelang hun parent, in een menu links. Nu kunnen die linker menu items ook children hebben (1 niveau). Ik heb dus 3 lagen.
Het ID van het gekozen menu-item wordt altijd meegegeven via een $_GET structuur.
Dus, om het even makkelijk te maken:
niveau1: Hoofdmenu
niveau2: Linkermenu - hoofditems
niveau3: Linkermenu - Subitems
Nu was het geen probleem om de hele structuur te laten zien aan de linker kant, afhankelijk van het hoofdmenu item, maar ik wil dat ie alle niveau2 items laat zien behorende bij een hoofdmenu en als ik dan op zo'n item klik dat ie dan de subitems laat zien. Als ik vervolgens op zo'n subitem klik moet ie uiteraard de content laten zien, maar ook de uitgeklapte structuur met zichzelf erin. Logisch uiteraard.
Nu is het niet moeilijk om de boom uit te laten klappen als je op een niveau1-item klikt. Ik heb alle items in een array $items staan:
$Typeid is het id van het menuitem dat ie via de $_GET structuur krijgt.
Maar op één of andere manier krijg ik het niet voor elkaar om ook zo'n soort iteratieve manier toe te passen voor mijn probleem. Wat ik moet doen volgens mij:
- Eerst achterhalen wat het niveau1-item is aan de hand van $Typeid(geen probleem, werkt goed).
- Vervolgens één voor één de menu-items van niveau 2 printen aan de linkerkant
- Een check in bouwen om te controleren of het huidige item dat geprint wordt geselecteerd is óf dat het huidige item een child heeft die geselecteerd is.
- Zoja, toon de children.
Maar...naar mijn weten maak ik geen denkfout. Alleen heb ik nu al 10 verschillende controlestructuren verzonnen en elke keer lukt het net niet (klapt ie niet uit, klappen ze allemaal uit) of een CGI error, wat volgens mij echt rampzalig is. Is dit eigenlijk wel met een iteratieve functie te doen?

Ik heb dus een Mambo-database met daarin menu items. Elk item heeft een parent. De items waarvan parent==0 zijn de hoofdmenu-items en verschijnen in een horizontale balk daarboven. De items waarvan parent!=0 verschijnen, al naar gelang hun parent, in een menu links. Nu kunnen die linker menu items ook children hebben (1 niveau). Ik heb dus 3 lagen.
Het ID van het gekozen menu-item wordt altijd meegegeven via een $_GET structuur.
Dus, om het even makkelijk te maken:
niveau1: Hoofdmenu
niveau2: Linkermenu - hoofditems
niveau3: Linkermenu - Subitems
Nu was het geen probleem om de hele structuur te laten zien aan de linker kant, afhankelijk van het hoofdmenu item, maar ik wil dat ie alle niveau2 items laat zien behorende bij een hoofdmenu en als ik dan op zo'n item klik dat ie dan de subitems laat zien. Als ik vervolgens op zo'n subitem klik moet ie uiteraard de content laten zien, maar ook de uitgeklapte structuur met zichzelf erin. Logisch uiteraard.
Nu is het niet moeilijk om de boom uit te laten klappen als je op een niveau1-item klikt. Ik heb alle items in een array $items staan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| showItems(getUpperItem($Typeid), $items, 0); function showItems($pid, $items, $level) { foreach($items as $item) { if($item['parent']==$pid) { echo "Menuitem bla, level $level"; showItems($item['id'], $items, $level+1); } } } function getUpperItem($id) { //functie geeft bovenste menuitem terug } |
$Typeid is het id van het menuitem dat ie via de $_GET structuur krijgt.
Maar op één of andere manier krijg ik het niet voor elkaar om ook zo'n soort iteratieve manier toe te passen voor mijn probleem. Wat ik moet doen volgens mij:
- Eerst achterhalen wat het niveau1-item is aan de hand van $Typeid(geen probleem, werkt goed).
- Vervolgens één voor één de menu-items van niveau 2 printen aan de linkerkant
- Een check in bouwen om te controleren of het huidige item dat geprint wordt geselecteerd is óf dat het huidige item een child heeft die geselecteerd is.
- Zoja, toon de children.
Maar...naar mijn weten maak ik geen denkfout. Alleen heb ik nu al 10 verschillende controlestructuren verzonnen en elke keer lukt het net niet (klapt ie niet uit, klappen ze allemaal uit) of een CGI error, wat volgens mij echt rampzalig is. Is dit eigenlijk wel met een iteratieve functie te doen?
Engineering is like Tetris. Succes disappears and errors accumulate.