Ik heb al vanalles met trail en error geprobeerd, maar ik krijg het niet voor elkaar om de submenu's uit de database in een lijst te nesten in het hoofdmenu. Zie voorbeeld van wat ik voor elkaar probeer te krijgen:
In plaats daarvan komen ze allemaal 'netjes' onder elkaar te staan. Dat is ook wel logisch, omdat het script eerst kijkt of er op niveau 1 menu items staan en dan pas verder gaat met niveau 2 etc. Maar ik krijg hem maar niet uit die loop.
Het script:
Ik ben nu al 4 dagen bezig om dit voor elkaar te krijgen, maar ook met het zoeken op Google kom ik niet erg ver...
Hopelijk kan iemand mij een duwtje in de juiste richting geven..
HTML:
1
2
3
4
5
6
7
8
| <ul> <li>menu item1</li> <li>menu item2 <ul> <li>submenu item1</li> </ul> </li> </ul> |
In plaats daarvan komen ze allemaal 'netjes' onder elkaar te staan. Dat is ook wel logisch, omdat het script eerst kijkt of er op niveau 1 menu items staan en dan pas verder gaat met niveau 2 etc. Maar ik krijg hem maar niet uit die loop.
Het script:
Visual Basic:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
| DIM MyArray() 'Start displaying recent projects Set Basismenu = Server.CreateObject( "ADODB.Recordset" ) Basismenu.CursorType = adOpenStatic Basismenu.ActiveConnection = Con Basismenu.Open = "SELECT DISTINCT Niveau FROM project WHERE Niveau <> 0 AND Niveauup = 0 ORDER BY Niveau ASC" '$nums=mysql_num_rows($query_select); WHILE NOT Basismenu.EOF 'Niveau omzetten naar niveau-string dat begrepen wordt door Javascript niveau=Basismenu("Niveau") ReDim Preserve MyArray(m) MyArray(m) = niveau m = m + 1 Lengte=len(niveau) js="" FOR i = 1 TO Lengte IF (i=1) THEN IF (Lengte = 1) THEN js = js + left(Niveau, 1) ELSE IF (Lengte > 1) THEN js = js + left(Niveau, 1) + "_" END IF END IF ELSE IF (i = Lengte) THEN js = js + right(Niveau, 1) ELSE js = js + mid(Niveau, i, 1) + "_" END IF END IF NEXT 'Als Niveau == 1 dan root, anders moet er bepaald worden waar het submenu onder valt. IF (niveau=1) THEN root="root" ELSE ord=right(niveau, 1) ne=mid(niveau, 1, Lengte-1) Set Menu_s = Server.CreateObject( "ADODB.Recordset" ) Menu_s.CursorType = adOpenStatic Menu_s.ActiveConnection = Con Menu_s.Open = "SELECT Menu_title FROM project WHERE Niveau = "& ne & " AND Volgorde = " & ord & "" root=Menu_s("Menu_title") 'Einde omzetten naar een menu_string END IF 'Eigenlijk bouw van het de menu scripts Response.Write "<ul>" & vbNewLine & _ js & " = new Menu(""" & root & """);" & vbNewLine Set Menu_level1 = Server.CreateObject( "ADODB.Recordset" ) Menu_level1.CursorType = adOpenStatic Menu_level1.ActiveConnection = Con Menu_level1.Open = "SELECT ID, SpecialismeID, Niveau, Volgorde, Menu_title, link, VolgCType, ContentType FROM project WHERE Niveau = " & niveau & " AND Niveauup = 0 ORDER BY Volgorde ASC" WHILE NOT Menu_level1.EOF id=Menu_level1("ID") url="specialisme.asp" SectorSpecialisme=Menu_level1("SpecialismeID") Menu_niveau=Menu_level1("Niveau") Menu_niveau=Cint(Menu_niveau) Menu_niveau_lengte=len(Menu_niveau) Volgorde=Menu_level1("Volgorde") VolgCType=Menu_level1("VolgCType") ContentType=Menu_level1("ContentType") waarde = Cstr(Menu_niveau)+Cstr(Volgorde) IF (in_array(MyArray, waarde)= false) THEN menutitle=Menu_level1("Menu_title") menu_link=Menu_level1("link") menutitle=Cstr(menutitle) IF (Menu_niveau <> 1 AND Volgorde = 1) THEN IF Menu_niveau_lengte > 1 AND menu_link <> "content.php" THEN url="actueel.asp?ID="& id &"&SectorSpecialisme=" & SectorSpecialisme & "" ELSE IF ContentType <> 2 THEN url = Replace(Menu_level1("link"), ".php", ".asp")&"?ID="& id ELSE IF ContentType = 2 THEN url="content.asp?ID="& id &"" END IF END IF END IF ELSE IF (ContentType = 7 AND Menu_niveau_lengte = 3 AND menutitle <> "Downloads" AND menutitle <> "Contact") THEN url="specialisme.asp?ID="& id &"" ELSE IF (Menu_niveau = 14) THEN url="sector.asp?ID="& id &"" ELSE IF (Menu_niveau <> 1 AND menutitle = "Downloads") THEN url="downloads.asp?ID="& id &"" ELSE IF (Menu_niveau <> 1 AND menutitle = "Contact") THEN url="contact.asp?ID="& id &"" ELSE IF (ContentType = 2 AND Menu_level1("link") = "content.php") THEN url="content.asp?ID="& id &"" ELSE IF (Menu_level1("link") = "contact.php") THEN url= "contact.asp?ID="& id &"" ELSE IF (Menu_level1("link") = "actueel.php") THEN url="actueel.asp?ID="& id &"" ELSE IF (Menu_level1("link") = "content.php") THEN 'Response.Write("Kloten") url="content.asp?ID="& id &"" ELSE IF (VolgCType= 8 AND ContentType= 7 AND Menu_niveau_lengte >= 2) THEN url="content.asp?ID="& id &"" ELSE IF (ContentType= 7) THEN url="content.asp?ID="& id &"" ELSE IF (Menu_level1("link") = "") THEN url="sector.asp?ID="& id &"" END IF END IF END IF END IF END IF END IF END IF END IF END IF END IF END IF END IF IF menutitle <> "" THEN Response.Write "<li>"& js & "<a href='" & url & "'>" & menutitle & "</a></li>" & vbNewLine END IF END IF Menu_level1.MoveNext WEND Response.Write "</ul>" & vbNewLine & vbNewLine 'Einde bouw van de menu scripts Basismenu.MoveNext WEND |
Ik ben nu al 4 dagen bezig om dit voor elkaar te krijgen, maar ook met het zoeken op Google kom ik niet erg ver...
Hopelijk kan iemand mij een duwtje in de juiste richting geven..
[ Voor 0% gewijzigd door een moderator op 08-08-2007 12:22 . Reden: code=asp veranderd naar code=vb voor de highlighter. ]