Avatar billede mik Nybegynder
22. januar 2004 - 11:50 Der er 2 kommentarer og
1 løsning

Flere levels i menu

Hej,

Jeg har for efterhånden lang tid siden fået hjælp til et menusystem. Nu kunne jeg godt tænke mig at udvide det lidt mere.

Som det er nu kan der kun vises en submenu, men jeg vil gerne kunne vise flere. Nedenfor ses koden. Felterne i databaserne er:

Tabelnavn "links"
url - window - navn - beskrivelse - sortnumber - kategoriID - linkID

Tabelnavn "kategori"
kategoriID - kategoriName - kategoriDescription

Er der nogen der kan gennemskue det. Skal der eventuelt flere felter i databasen? Eller noget helt andet. Er du nogen der har kendskab til et lignende system. Kravet er at det skal være databasestyret - Free - Kunne vedligeholdes via browseren.

Med venlig hilsen

Mik

**********
Kode
**********
<html>
<head>
<LINK rel="stylesheet" type="text/css" href="style.css">
<base target="main">
</head>


<%
set conn = server.createobject("adodb.connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("links.mdb")
%>

<%
set ms = conn.execute("SELECT * from links WHERE kategoriID = 1 ORDER BY sortnumber asc")
%>

<% do until ms.EOF %>
<a title="<%=ms("beskrivelse")%>" href="http://<%=ms("url")%>" target="<%=ms("window")%>"><%=ms("navn")%></a>
<% ms.movenext
loop %>
</table>


<% ms.close
set ms = nothing %>
<br>

<%
set ks = conn.execute("SELECT DISTINCT links.kategoriID, links.user, kategori.kategoriID, kategori.kategoriDescription, kategori.kategoriName FROM links INNER JOIN kategori ON links.kategoriID = kategori.kategoriID WHERE links.kategoriID > 1")
%>

<%
if not (ks.eof or ks.BOF) then
%>

<b><font size="4">&nbsp;<u>Undermenuer</u></font></b><br>
<br>

<%
end if
%>

<% do until ks.eof%>

<a title="<%=ks("kategoriDescription")%>" href="links.asp?kat=<%=ks("kategoriID")%>" target="contents"><%=ks("kategoriName")%></a>
<%
if cint(request.querystring("kat")) = ks("kategoriID") then 'er vi igang med den ønskede kategori
    set rs = conn.execute("SELECT * FROM links WHERE user=('" & varUser & "') AND "& ks("kategoriID") &"=kategoriID ORDER BY sortnumber asc")
    if not rs.eof then rsArray = rs.getRows() else rsArray = null end if
    if isArray(rsArray) then 'Udskriv alle linksne til den valgte kategori
      for i=0 to ubound(rsArray,2)
      %><a class="menu<%= u_user %>" title="<%=rsArray(3,i)%>" href="http://<%=rsArray(0,i)%>" target="<%=rsArray(1,i)%>"> - <%=rsArray(2,i)%></a><%
            next
        end if       
    end if
ks.movenext
loop
%>
</table>

<% ks.close   
set ks = nothing %>
</body>
</html>
Avatar billede fixxxer Nybegynder
22. januar 2004 - 13:14 #1
det du søger lyder vist som noget hen af et content management system. det er bestemt ikke nemt at lave, menuen for sig selv ja, men mere end det ville nok være en opgave at stille på sharksforum.com
Avatar billede fennec Nybegynder
22. januar 2004 - 13:45 #2
Det består i bund og grund om en "tegnefunktion" og et ParentID i databasen.

database:
id, pID, url, menuText, sort.....

Tegnefunktion:
function tegn(MenuID, level)
dim tegnRS
  for 0 to level
    response.write "&nbsp;"
  next
  response.write "<a href=url>menuText</a><br>"
  tegnRS = conn.execute("select * from menu where pID=MenuID order by sort)
  do while not tegnRS.eof
    tegn(tegnRS("id"),level+1)
    tegnRs.movenext
  loop
end function

sådan her startes menuen:
set rs = conn.execute(select * from menu where pID is null order by sort)
do while not rs.eof
  tegn(rs("id"),0)
  rs.movenext
loop

alle rækker i databasen hvor pID = NULL er toppunkter. Nu har du grundskitsen til en dynamisk menu. Du skal bare rette til hvor menupunkterne bliver udskrevet.
Avatar billede mik Nybegynder
04. august 2005 - 14:11 #3
Lukker og slukker
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