Din database opbygning er som den skal være. Du skal havde gang i en rekrisiv funktion og dit problem er i pricippet det samme om dette:
http://www.html.dk/scripts/asp/00015/Jeg har prøvet at rette koden til så den passer med det output du ønsker, men du skal stadig lige rette conenction string og sql sætning så tabellen passer. Jeg har brugt to funktioner den ene finder "stien" fra parent til et bestemt ID. Den anden looper igenne ID'erne og tjekker om der er match imellem ID og parentID.
<%
Set rs = Server.CreateObject("ADODB.RecordSet")
Set conn = Server.CreateObject("ADODB.Connection")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("db1.mdb")
conn.Open strDSN
sql = "SELECT * FROM spm691029 WHERE Category=1"
Set rs = conn.Execute(sql)
do while not rs.eof
' Gem data som kommasepareret liste
arrID = arrID & "," & rs("ID")
arrRE = arrRE & "," & rs("parent")
arrSU = arrSU & "," & rs("name")
rs.MoveNext
Loop
' Lav arrays med data
arrID = Split(arrID,",")
arrRE = Split(arrRE,",")
arrSU = Split(arrSU,",")
Rs.Close
'Funktion som finder path fra root til et ID
function breadcrumb(id)
dim x
for x= 1 to ubound(arrID)
if int(id) = int(arrID(x)) then
if int(arrRE(x))=0 then
breadcrumb = "" & arrSU(x) & breadcrumb
else
breadcrumb = breadcrumb & breadcrumb(arrRE(x)) & " / " & arrSU(x)
end if
end if
next
end function
' Funktion som undersøger for svar
Function Threads(intID)
For m = 1 to Ubound(arrID)
' Hvis svar til det indlæg som funktionen er kaldt med
If int(arrRE(m)) = int(intID) Then
' Tilføj til liste og kald funktionen for at undersøge for svar
Threads = Threads & breadcrumb(arrID(m)) & "<br>" & Threads(arrID(m))
End If
Next
End Function
' Kald funktionen med alle hovedindlæg
Response.Write Threads(0)
%>