In mijn site zit een javascript-pulldownmenu'tje die ik vul met content uit een database. Dat werkt ongeveer op deze manier:
Eerst moet je de menu's definiëren
en vervolgens aangeven wat er aan deze menu's gekoppeld moet werden
Als een menu nog een submenu (child) heeft dan moet er een ChildID bij komen waar de bijbehorende subs aangekoppeld zijn. Maar als er geen bijbehorende subs zijn, dan moet deze niet worden gezet. Want als je hem toch zet dan krijg je een zwart streepje en pijltje achter de tekst.
Via php bouw ik de tekst op. En wonderbaarlijk genoeg lukt me dat ook nog wel. Alleen ik weet niet wanneer een item "kinderen" heeft. Dus doe ik in de loop nog een extra query. En die wordt dus tig keer uitgevoerd.
Het stuk code waar het om gaat:
Het werkt, maar dat zou toch veel beter moeten kunnen?
Eerst moet je de menu's definiëren
code:
1
2
3
4
| SetMenus( {MenuID:"item_shop"}, {MenuID:"item_1"} ) |
en vervolgens aangeven wat er aan deze menu's gekoppeld moet werden
code:
1
2
3
4
5
6
7
8
| SetItems( {MenuID:"item_shop",DisplayText:"Assortiment",LinkURL:"menu.php",ChildID:"item_1"}, {MenuID:"item_1",DisplayText:"Assortiment",LinkURL:"menu.php?id=1"} //MenuID:"naam van de parent", //DisplayText:"weergave tekst", //LinkURL:"waarnaar toe als je er op klikt", //ChildID:"naam van het huidigeblok" (optioneel) ) |
Als een menu nog een submenu (child) heeft dan moet er een ChildID bij komen waar de bijbehorende subs aangekoppeld zijn. Maar als er geen bijbehorende subs zijn, dan moet deze niet worden gezet. Want als je hem toch zet dan krijg je een zwart streepje en pijltje achter de tekst.
Via php bouw ik de tekst op. En wonderbaarlijk genoeg lukt me dat ook nog wel. Alleen ik weet niet wanneer een item "kinderen" heeft. Dus doe ik in de loop nog een extra query. En die wordt dus tig keer uitgevoerd.

Het stuk code waar het om gaat:
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
| //basis menu aanmaken $menu_SetMenus .= '{MenuID:"item_menu"},'; $menu_SetItems .= '{MenuID:"base",DisplayText:"Assortiment ",LinkURL:"menu.php",ChildID:"item_menu"},'; if ($menu_result = mysql_query("SELECT * FROM $tablename_categorie AS c ORDER BY categoriecode,parent_id")) { if (mysql_num_rows($menu_result)) { while ($menu_row = mysql_fetch_array($menu_result)) { $link = "menu.php?cat=".$menu_row["id"]; $child = ''; //nog even tig keer een query uitvoeren om te kijken of hij kinderen heeft >_< if($check_row = mysql_fetch_array(mysql_query(" SELECT id FROM $tablename_categorie WHERE parent_id = ".$menu_row['id'] ))) { //is er een child dan definieren $child = ',ChildID:"item_menu'.$menu_row["id"].'"'; } if($menu_row['parent_id']==0){ //als er geen parentid is dan koppelen aan basismenu $menu_SetMenus .= '{MenuID:"item_menu'.$menu_row["id"].'"},'; $menu_SetItems .= '{MenuID:"item_menu", DisplayText:"'.$menu_row["categorie"].' ",LinkURL:"'.$link.'"'.$child.'},'; } else { $menu_SetMenus .= '{MenuID:"item_menu'.$menu_row["id"].'"},'; $menu_SetItems .= '{MenuID:"item_menu'.$menu_row["parent_id"].'", DisplayText:"'.$menu_row["categorie"].'",LinkURL:"'.$link.'"'.$child.'},'; } } } } |
Het werkt, maar dat zou toch veel beter moeten kunnen?

It was that kind of a crazy afternoon, terrifically cold, and no sun out or anything, and you felt like you were disappearing every time you crossed a road.
If it weren't for Carbon-14, I wouldn't date at all.