Avatar billede razser Nybegynder
15. februar 2005 - 09:20 Der er 7 kommentarer og
1 løsning

Menuer med flere niveauer.

Jeg er ved at opbygge et site, der ligger i en Access-database(Pages.mdb), og har brug for hjælp til bl.a. SQL-sætningerne.
Menupunkterne ligger i en tabel (Page). Sidens ID hedder PageID og feltet for hvilken side, menupunktet hører under,
hedder ParentPageID.

Strukturen kunne se sådan ud:

PageID    ParentPageID  MenuText
2    0        Om os
3    0        Kontakt
4    0        Produkter
5    2        Værdier
6    2        Mission
7    4        Cykler
8    4         Knallerter
9    7        Mountainbike
10    7        Sport
11    7        Classic   
12    4        Tilbehør       

Når man klikker på et hovedpunkt, vises undermenupunkter i fx. venstre side. Når man så atter klikker på et af de underliggende
punkter, skal menuen highlightes på det punkt, man har klikket på. Hvis der er underpunkter til det pågældende punkt, skal man
ved et klik få vist både niveau 2 og 3 etc. - som man ser i en almindelig træmenu. Dog ønsker jeg ikke at bruge en træmenu, bl.a. fordi den klapper sammen, når man klikker på et link, og siden reloades. Ovenstående menu vil tage sig sådan ud, hvis man klikker på Produkter og derefter på Cyker: (håber, at siden formateres rigtigt).


              Os os     Produkter  Kontakt

Cykler
Mountainbike
Sport
Classis
Knallerter
Tilbehør

Jeg ønsker kun at vise én ID i adresselinien (index.asp?ID=12), og altså ikke en lang streng som f.eks. index.aspPageID=22&sub=4 etc etc. Der skal kunne fremkomme mindst 4 niveauer i menuen - gerne flere. Spørgsmålet er, om man kan lægge informationerne om sidens "tilhørsforhold" i et array eller hvordan ???

Hvis der er nogen, der har et godt forslag til hvordan ASP'en og SQL-sætningerne bygges op, hører jeg meget gerne fra jer :)
Avatar billede razser Nybegynder
15. februar 2005 - 09:24 #1
Prøver lige igen:

------------------------------------------
PageID    ParentPageID  MenuText
2              0        Om os
3              0        Kontakt
4              0        Produkter
5              2        Værdier
6              2        Mission
7              4        Cykler
8              4        Knallerter
9              7        Mountainbike
10            7        Sport
11            7        Classic   
12            4        Tilbehør

--------------------------------------------

        Os os     Produkter  Kontakt

Cykler
  Mountainbike
  Sport
  Classis
Knallerter
Tilbehør
------------------------------------------
Avatar billede ldanielsen Nybegynder
15. februar 2005 - 09:35 #2
Jeg synes det eren rigtig fin måde at gøre det på. Faktisk har jeg lavet næsten det samme selv.

Ser lige på det ...
Avatar billede ldanielsen Nybegynder
15. februar 2005 - 10:24 #3
<%@ Language=VBScript %>
<%
Set Con = Server.CreateObject("ADODB.Connection")
Set Com = Server.CreateObject("ADODB.Command")
Set Rec = Server.CreateObject("ADODB.RecordSet")
Con.Open (Connectionstring)
Com.ActiveConnection = Con

Com.CommandText = "SELECT MenuText, ParentPageID, PageID FROM Page"

Rec.Open Com, , 0, 1
Dim ArrMenu
ArrMenu = Rec.GetRows
Rec.Close       
Con.Close
set Con=nothing
Set Com = Nothing
Set Rec = Nothing
%>
<HTML>
<BODY>

<P>
<%
Session("nodes") = Split(Request.QueryString("nodes"), ",")
call hentMenu(0, "", "0")
%>
</P>

</BODY>
</HTML>

<%   
Sub hentMenu(KatID, strSep, link)
    c = 0
    for each elem in ArrMenu
        if c = 0 then myText = elem
        if c = 1 then myKatID = Cint(elem)
        if c = 2 then myID = Cint(elem)
        c = c + 1
        if c = 3 then   
            if myKatID = KatID then
                Response.Write (strSep & "<a href=""?nodes=" & link & "," & myID & """>" & myText & "</a><br>")
                for each e in Session("nodes")
                    if Cint(e) = myID then call hentMenu(myID, strSep & "-", link & "," & e)
                next
            end if
            c = 0
        end if
    next
end Sub
%>
Avatar billede ldanielsen Nybegynder
15. februar 2005 - 10:24 #4
Det er ikke helt hvad du havde tænkt dig, men det kunne være et udgangspunkt
Avatar billede razser Nybegynder
15. februar 2005 - 14:18 #5
Tak for dit svar. Jeg må desværre sige, at det ikke helt levet op til løsningen. Det er bl.a. et krav, at man blot skal kunne linke til sitet med blot én ID, f.eks. index.asp?id=4 og så komme ind på siden, hvor menu og undermenu er vist, og hvor det pågældende link er fremhævet med en bestemt class. Det vil indebære, at der på en eller anden måde skal laves en tæller, der bestemmer hvilket niveau, linket er på, og indsætter en class på linket derefter, og som samtidig skriver både over-og under-menupunkter ud. Som det ser ud nu, vil et link skulle have hele strengen (fx. index.asp?ID=89&nodes=0,14,50,64,89), for at det vil kunne lade sig gøre. Samtidig skrives alle hoved-og undermenupunkter ud i hele menuen, hvor den kun skal tage den tilknyttede undermenu ?????

Jeg forestiller mig stadig, at man kan lave et array med de informationer om menuen og linket, der skal brugs - det er bare lige hvordan...

Men jeg giver gerne flere points, hvis du - eller andre - har tid og lyst til at hjælpe....
Avatar billede mortency Nybegynder
18. februar 2005 - 11:00 #6
Beskriv problemet ditt bedre, iflg det andre spm ditt.
Avatar billede razser Nybegynder
19. februar 2005 - 09:45 #7
Hej Morten, det nemmeste er måske at henvise til et site, der kan det jeg eftersøger. Jeg har endelig fundet et her, som lægger sig op af hvad jeg ønsker. Prøv at klikke på dette link: http://www.danskretursystem.dk/Default.asp?ID=108

Ligemeget om man klikker på topmenuen eller menuen til venstre, vises kun én ID i adresselinien. Og når man kommer ind på en bestemt side, er linket markeret (enten fed eller kursiv). Man kan hele tiden se hvor man befinder sig - og om der er undermenupunkter.

Prøv f.eks. at klikke på deres sitemap:
http://www.danskretursystem.dk/Default.asp?ID=4 
Når man vælger et punkt, tager det kun en ID med, og viser alligevel om der er undermenupunkter til det pågældende punkt... menuen er så at sige klappet ud.

Håber, at du bedre forstår mig nu....
Avatar billede razser Nybegynder
22. februar 2005 - 10:54 #8
Lukker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester