Oke, ik ben bezig om een menu'tje te maken wat mensen zelf kunnen bewerken, dus de volgorde bepalen, subitems toevoegen enzovoorts. Ik heb dit nu:
Nu loop ik dus tegen het probleem aan van het sorteren van subitems. Moet ik daarvoor een extra kolom in de database aanmaken? Zoja, hoe bepaald ik de waarde die er in staat, zodat ik niet alle rijen hoef aan te passen? (Volg je me nog?) Of hoe pak ik dit aan?
Ik hoef geen lappen code, gewoon een duwtje in de juiste richting
Heb al gezocht, hier en op google maar niet echt iets duidelijks gevonden..
PHP:
*De menu-array wordt later opgehaald uit de database*.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| <?php error_reporting ( E_ALL ); $menu = array (); // $menu [ 'parent_id' ] [] = array ( 'unieke_db_id', 'titel', 'type' (1=component, 2=pagina) ); $menu [ 0 ] [] = array ( 1, 'Home', 2 ); $menu [ 0 ] [] = array ( 2, 'Activiteiten', 2 ); $menu [ 2 ] [] = array ( 3, 'Agenda', 1 ); $menu [ 2 ] [] = array ( 4, 'Target', 2 ); $menu [ 0 ] [] = array ( 5, 'Gastenboek', 1 ); $menu [ 5 ] [] = array ( 6, 'Test', 1 ); $menu [ 5 ] [] = array ( 7, 'Test', 1 ); /* Functie die menu maakt, deze roept menuItems aan om de items er in te zetten */ function menu ( $menu, $parent ) { echo "<ul>"; menuItems ( $menu, $parent ); echo "\n</ul>\n"; } function menuItems ( $menu, $parent, $level = 0 ) { /* (Sub)items van de parent doorlopen */ for ( $i = 0; $i < count ( $menu [ $parent ] ); $i ++ ) { /* Variabelen instellen */ $id = $menu [ $parent ] [ $i ] [ 0 ]; $titel = $menu [ $parent ] [ $i ] [ 1 ]; $type = $menu [ $parent ] [ $i ] [ 2 ]; /* Hoever moet dit item inspringen? *alleen voor de tabs, voor de nette html* */ if ( $parent == 0 ) echo "\n\t"; else echo "\n\t\t\t"; /* Is dit item een component (mag niet bewerkt worden) of een pagina (mag wel bewerkt worden)? */ if ( $type == 1 ) // Component.. dus niet bewerken echo '<li><a href="#" onclick="window.alert(\'Dit onderdeel is geen pagina, dus kun je deze niet bewerken!\nGa naar de site zelf voor het beheren van dit onderdeel!\');">' . $titel .'</a>'; elseif ( $type == 2 ) // Component.. dus niet bewerken echo '<li><a href="bewerken/' . $id . '">' . $titel .'</a>'; /* Sortering-pijltjes */ echo ' <a href="menu?actie=omhoog&id=' . $id . '">[img]"omhoog.png"></a><a[/img][img]"omlaag.png"></a[/img]'; /* Heeft dit item subitem(s)? */ if ( isset ( $menu [ $id ] ) && is_array ( $menu [ $id ] ) ) echo "\n\t\t<ul>"; else echo "</li>"; /* Is dit een subitem van een item en heeft dít item geen subitems, en is het item 't laatste item van deze 'reeks'? Zoja, deze reeks afsluiten */ if ( $level == 1 && ! isset ( $menu [ $id ] ) && ! isset ( $menu [ $parent ] [ $i + 1 ] ) ) { echo "\n\t\t</ul>\n\t</li>"; } /* Subitems? */ if ( isset ( $menu [ $id ] ) && is_array ( $menu [ $id ] ) ) menuItems ( $menu, $id, $level + 1 ); } } menu ( $menu, 0 ); ?> |
Nu loop ik dus tegen het probleem aan van het sorteren van subitems. Moet ik daarvoor een extra kolom in de database aanmaken? Zoja, hoe bepaald ik de waarde die er in staat, zodat ik niet alle rijen hoef aan te passen? (Volg je me nog?) Of hoe pak ik dit aan?
Ik hoef geen lappen code, gewoon een duwtje in de juiste richting
Heb al gezocht, hier en op google maar niet echt iets duidelijks gevonden..
Hoi!