Hejsa alle
Jeg roder stadig med opfinderens menu struktur. Nu får jeg det ud jeg sådan
set vil - altså eksempelvis:
Service
Lastbiler
Biler
Det eneste jeg ikke vil have ud er den øverste top - altså "Service". Jeg
ved at jeg har et felt RefID, når denne er 0 så vil jeg ikke have den
udskrevet men de underliggende skal udskrives.
Jeg har forsøgt mig ved at indsætte
if rs("RefID") <> then
end if
forskellige steder i scriptet. Men gør jeg dette, får jeg slet ikke noget
ud, og det skal den jo, da der jo er Lastbiler og Biler som underliggende
punkter.
Jeg har også forsøgt at lave en ekstra where sætning i sql sætningen:
strSQL = "Select * from tblPages where RefID <> 0 and MenuNavn = '" &
smenunavn & "';"
Denne ville den heller ikke godtage - igen kom der så intet ud.
Hvor i koden skal jeg ændre det, så øverste niveau - altså den med RefID = 0
ikke kommer med men de andre gør?
Koden:
<%
' This script can be used freely as long as all copyright messages are
intact
' Morten Neesgaard,
www.opfinderen.dk (c) 2004
'trim(Request("ID"))
smenunavn = trim(Request("menunavn"))
if id <> "19" then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & ("c:\Inetpub\wwwroot\Randers\data\test.mdb")
Conn.Open DSN
' Rekursiv funktion, der returnerer en liste over ID-numre på valgt mappe
samt de overliggende
Function FindModer(ID)
For i = 1 To Ubound(IDer)
If CInt(IDer(i)) = CInt(ID) Then
FindModer = FindModer & "," & ID & "," & FindModer(RefIDer(i))
End If
Next
End Function
' Rekursiv funktion, der returnerer en if-sætning med ID-numre på valgt
mappe samt de underliggende, der samtidig skal slettes
Function SletMappe(ID)
For i = 1 To Ubound(IDer)
If CInt(RefIDer(i)) = CInt(ID) Then
SletMappe = SletMappe & " Or ID = " & IDer(i) & SletMappe(IDer(i))
End If
Next
End Function
' Rekursiv funktion, der udskriver alle mapper
Function Struktur(ID, Niveau)
Niveau = Niveau + 1
For i = 1 To Ubound(IDer)
If CInt(RefIDer(i)) = CInt(ID) And InStr(AabneIDer, "," & ID & ",") Then
For j = 0 To Niveau
Struktur = Struktur & " "
Next
Struktur = Struktur & " <a href='page.asp?id=" & IDer(i) &
"&menunavn=" & smenunavn & "'>" & Navne(i) & "</a><br>" & Struktur(IDer(i),
Niveau)
End If
Next
Niveau = Niveau - 1
End Function
' ID på den valgte mappe
DetteID = Round(0 & Request.Querystring("id"))
'response.write "sqlstmt="&strSQL&"<br>"
'response.end
strSQL = "Select * from tblPages where MenuNavn = '" & smenunavn & "';"
set rs = Conn.Execute(strSQL)
While Not rs.EOF
IDer = IDer & "," & rs("ID")
RefIDer = RefIDer & "," & rs("RefID")
Navne = Navne & "," & rs("pagename")
If CInt(DetteID) = CInt(rs("ID")) Then DenneMappe = rs("pagename")
rs.MoveNext
Wend
' Arrays med al data fra tabellen
IDer = Split(IDer, ",")
RefIDer = Split(RefIDer, ",")
Navne = Split(Navne, ",")
' Dan liste over ID-numre på overliggende mapper til valgt mappe, der skal
være markeret som åbne
Arr_Temp_AabneIDer = Split(FindModer(DetteID) & ",0,", ",")
For t = 1 To UBound(Arr_Temp_AabneIDer) - 1 Step 2
AabneIDer = "," & Arr_Temp_AabneIDer(t) & "," & AabneIDer
Next
Arr_AabneIDer = Split(AabneIDer, ",")
Response.Write Struktur(0, 0)
Set rs = Nothing
Set Conn = Nothing
end if
%>