Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ASP]Submenus uit DataBase nesten in hoofdmenu

Pagina: 1
Acties:
  • 1.367 views sinds 30-01-2008

Verwijderd

Topicstarter
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:
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. ]


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
*duw* recursive functions

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk eens naar recursie ;)

Daarnaast is het niet de bedoeling dat je hier een korte omschrijving en dan een lap code post en dat wij het even voor je fixen. Ik kan je wel vertellen dat je code een aardige rommel is wegens het gebrek aan structurering en indenting. Hoe dan ook, omdat dit topic niet veel meer dan een quickfix is gaat het dan ook op slot. Bij deze het vriendelijke verzoek even onze Programming Beleid Quickstart door te nemen; je bent van harte welkom met een nieuw topic, als je die quickstart dan maar in je achterhoofd houdt (en enkel relevante code post).

Tip: Maak voor jezelf een korte/overzichtelijke test-case en ga daar het idee mee uitwerken. Kom je daar niet uit dan heb je meteen iets overzichtelijk(er)s om te posten ;)

[ Voor 10% gewijzigd door RobIII op 08-08-2007 12:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.