/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Rekursiv funktion hvor øverste niveau ikke~
Fra : Andersine And


Dato : 15-03-06 09:58

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 & "&nbsp;&nbsp; "
Next
Struktur = Struktur & "&nbsp;<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
%>



 
 
Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste