Ik zie het even niet meer. De bedoeling is als volgt: ik vul een array met menu items. Vervolgens roep ik de functie buildMenu aan. Deze moet een navigatie tabel uitspugen met daarin de goede menu items opengeklapt en vetgedrukt:
Het probleem: als ik "over ons" (buildMenu($navitems, 0, 0, 2)) aanroep, krijg ik een keurige navigatie met "over ons" vet gedrukt. Als ik "diensten" aanklik (buildMenu($navitems, 0, 0, 4)), werkt alles ook nog: "diensten" is vet en uitgeklapt:
MAar als ik "Duur" aanroep (buildMenu($navitems, 0, 0, 5)), krijg ik:
in plaats van
Hoe kan dat? Ik ben er al lang mee bezig, maar volgens mij klopt de recursie toch?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| $navitems[1] = Array('parent'=>0, 'name'=>'Home', 'href'=>''); $navitems[2] = Array('parent'=>0, 'name'=>'Over Ons', 'href'=>'over.php'); $navitems[3] = Array('parent'=>0, 'name'=>'Producten', 'href'=>'producten.php'); $navitems[4] = Array('parent'=>0, 'name'=>'Diensten', 'href'=>'diensten.php'); $navitems[5] = Array('parent'=>4, 'name'=>'Duur', 'href'=>'contact.php'); $navitems[6] = Array('parent'=>4, 'name'=>'Heel Duur', 'href'=>'gastenboek.php'); function buildMenu($menuItems, $curItem, $depth, $unfoldItem) { global $page; $first = true; foreach ($menuItems as $itemKey=>$item) { if ($item['parent'] == $curItem and ($item['parent'] == 0 or $item['parent'] == $unfoldItem)) { if ($first) { if ($depth > 0) echo '<tr><td> </td><td>'; echo '<table>'; $first = false; } echo '<tr><td>[img]"bullet.gif"[/img]</td>'; if ($page == $itemKey) echo '<td><b>'.$item['name'].'</b></td></tr>'; else echo '<td><a href="'.$item['href'].'">'.$item['name'].'</a></td></tr>'; buildMenu($menuItems, $itemKey, $depth + 1, $unfoldItem); } } if (!$first) { echo'</table>'; if ($depth > 0) echo '</td></tr>'; } } buildMenu($navitems, 0, 0, $page); |
Het probleem: als ik "over ons" (buildMenu($navitems, 0, 0, 2)) aanroep, krijg ik een keurige navigatie met "over ons" vet gedrukt. Als ik "diensten" aanklik (buildMenu($navitems, 0, 0, 4)), werkt alles ook nog: "diensten" is vet en uitgeklapt:
HTML:
1
2
3
4
5
6
| Home Over Ons Producten <b>Diensten</b> Duur Heel Duur |
MAar als ik "Duur" aanroep (buildMenu($navitems, 0, 0, 5)), krijg ik:
HTML:
1
2
3
4
| Home Over Ons Producten Diensten |
in plaats van
HTML:
1
2
3
4
5
6
| Home Over Ons Producten Diensten <b>Duur</b> Heel Duur |
Hoe kan dat? Ik ben er al lang mee bezig, maar volgens mij klopt de recursie toch?
[ Voor 18% gewijzigd door Reveller op 22-10-2004 16:50 . Reden: indices ge-quote ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."