Jag har: Eftersom detta inlägg inte genererade något svar i maj 2002 och jag fortfarande inte fått det som jag vill ha det, så gör jag ett försök till. Så här ser den ut i nuläget - har plockat bort försöken att vid klickning få utfallande alternativ eftersom jag inte fick till det som jag ville. Detta kanske kan var till hjälp? Andreas - visste väl att du hade något på lager... ;-) Skrev om koden från ett annat inlägg jag skrev. Koden är otestad, så syntaxfel och sånt kan förekomma.Databasdriven TOC med behörighetsnivåer
- tblMenyer, där jag strukturerar menyalternativen i den ordning och nivå jag vill ha dem, jag har också noterat vilken behörighetsnivå som behövs för att få tillgång till alternativet
Jag vill:
- ha en utfallande meny, där endast de alternativ visas som jag har behörighet att se (först en allmän behörighet och efter inloggning ev lite mer...)
- att ett klick öppnar stängda nivåer eller stänger redan öppnade
- ha obegränsat antal nivåer - i varje fall fler än två...
- INTE lösa det med JavaScript, eftersom jag inte kan det... :-)
Jag kan:
- lösa den första nivån av menyer och även den andra, men sedan blir koden för krånglig och rörig och jag tappar fattningen... :-)
Kan någon här tipsa om färdiga lösningar/scriptsnuttar eller annat som får mig tillbaka på rätt köl igen?
Jag har sett de tips/kodsnuttar som hanterar enkla texter med länkar, det är så jag också har börjat, fastän i tabell och sedan gått vilse...Sv: Databasdriven TOC med behörighetsnivåer
Någon som har något tips? Det är fortfarande så, att jag inte kan Javascript utan måste välja VBScript...Sv: Databasdriven TOC med behörighetsnivåer
Denna kod hämtar menyalternativ från en tabell och så använder jag css för att sätta lite olika färg på olika rader...
<code>
<table border="1" cellpadding="3" width="100%" style="border-collapse: collapse" cellspacing="0" bordercolor="#000000">
<tr>
<td width="100%">
<table border="0" cellspacing="0" width="100%" cellpadding="1" style="border-collapse: collapse" bordercolor="#111111">
<% Do until rst.EOF %>
<% if session("userstatus") <= rst("kravstatus") then%>
<tr class="toc<%=rst("nivå")%>" >
<td width="1%" align="left" valign="top" class="toc<%=rst("nivå")%>" > </td>
<td width="3%" align="left" valign="top" class="toc<%=rst("nivå")%>" >
<% if rst("nivå") >1 then %>
<img border="0" src="folder.gif">
<% else %>
<% end if %>
</td>
<td width="77%" align="left" valign="top" class="toc<%=rst("nivå")%>" >
<% if rst("sida") <>"" then %>
<a href="<%=rst("url")%>" target="<%=rst("target")%>"><%= RSt("toc") %/a>
<% else %>
<%= RSt("toc") %>
<% end if %>
</td>
<td width="19%" class="toc<%=rst("nivå")%>" >
<p align="right"> <%=rst("tocanm")%></td>
</tr>
<% end if %>
<% rst.movenext
loop %>
</table>
</code>Sv: Databasdriven TOC med behörighetsnivåer
Tabell: Users
Fält: UserId (Int, Räknare)
Fält: UserName (varchar(20))
Fält: UserPassword (varchar(20))
Tabell: Groups
Fält: GroupId (Int, Räknare)
Fält: GroupName (varchar(20))
Tabell: UserGroups
Fält: UserGroupId (Int, Räknare)
Fält: UserGroupUser (Int) -> Users.UserId
Fält: UserGroupGroup (Int) -> Groups.GroupId
Tabell: Links
Fält: LinkId (Int, Räknare)
Fält: LinkParent (Int) -> Links.LinkId
Fält: LinkName (varchar(255))
Fält: LinkURL (varchar(255))
Tabell: Authorised
Fält: AuthorisedId (Int, Räknare)
Fält: AuthorisedGroup (Int) -> Groups.GroupId
Fält: AuthorisedLink (Int) -> Links.LinkId
Exempel Data:
Users
--------------------------
UserId UserName UserPassword
--------------------------
1 Adam
2 Bengt
3 Carl
Groups
--------------------------
GroupId GroupName
--------------------------
1 Alla
2 Medlemmar
UserGroups
--------------------------
UserGroupId UserGroupUser UserGroupGroup
--------------------------
1 1 1
2 1 2
3 2 1
4 3 1
Links
--------------------------
LinkId LinkParent LinkName LinkURL
--------------------------
1 Null Pellesoft http://www.pellesoft.se
2 1 Chat http://www.pellesoft.se/login/chat/main.asp?room=1
3 1 Forum http://www.pellesoft.se/development/forum/summary2.asp
Authorised
--------------------------
AuthorisedId AuthorisedGroup AuthorisedLink
--------------------------
1 1 1
2 2 2
3 2 3
<code>
<%
Sub List(Con, Links, lngUserId, fldID, fldName, fldURL)
Dim SubLinks
Set SubLinks = Server.CreateObject("ADODB.Recordset")
Response.Write "<UL>"
Do Until Links.EOF
If Len(fldURL.Value) > 0 Then
Response.Write "<LI>" & Server.HTMLEncode(Links("LinkName"))& "</LI>"
Else
Response.Write "<LI>" & Server.HTMLEncode(fldName.Value)& "</LI>"
End If
SubLinks.Open "SELECT *" & vbCrLf & _
"FROM Links" & vbCrLf & _
"WHERE LinkParent = " & fldId.Value & " AND " & vbCrLf & _
" LinkId IN (SELECT Authorised.AuthorisedLink" & vbCrLf & _
" FROM UserGroups LEFT JOIN Authorised ON UserGroups.UserGroupGroup = Authorised.AuthorisedGroup" & vbCrLf & _
" WHERE UserGroups.UserGroupUser = " & lngUserId & ")" & vbCrLf & _
"ORDER BY LinkName", Con
If SubLinks.EOF Then
'Response.Write "<UL><LI>(Tom)</LI></UL>"
Else
List Con, lngUserId, SubLinks, SubLinks("LinkId"), SubLinks("LinkName"), SubLinks("LinkURL")
End If
SubLinks.Close
Loop
Response.Write "</UL>"
Set SubLinks = Nothing
End Sub
Dim Rs
Dim Con
Dim lngUserId
lngUserId = 1
'lngUserId = Session("UserId")
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("TestDB.mdb")
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT *" & vbCrLf & _
"FROM Links" & vbCrLf & _
"WHERE LinkParent Is Null AND " & vbCrLf & _
" LinkId IN (SELECT Authorised.AuthorisedLink" & vbCrLf & _
" FROM UserGroups LEFT JOIN Authorised ON UserGroups.UserGroupGroup = Authorised.AuthorisedGroup" & vbCrLf & _
" WHERE UserGroups.UserGroupUser = " & lngUserId & ")" & vbCrLf & _
"ORDER BY LinkName", Con
If Rs.EOF Then
Response.Write "Det finns inga poster"
Else
List Con, rs, rs("LinkId"), rs("LinkName"), rs("LinkURL")
End If
rs.Close
Set rs = Nothing
Con.Close
Set Con = Nothing
</code>Sv: Databasdriven TOC med behörighetsnivåer
Tack - jag ska noga studera och se om jag förstår... :-)Sv: Databasdriven TOC med behörighetsnivåer