01. november 2002 - 21:32
Der er
6 kommentarer og
2 løsninger
Første og sidste ID i en rekrusiv menu
Hej,
Jeg har en Access db med følg. felter:
ID - Autonum.
Overskrift - Tekst
ParentID - Tal
1 - Overskrift
2 - Overskrift
3 - Overskrift
4 - Overskrift
Hvis jeg angive side.asp?id=4 vil jeg gerne have udskrevet hvad der er det første ID (altså 1), men det skulle jo selvfølgelig være muligt at angive 3 (så den stadig retunere 1)
Hilsen
Claus
01. november 2002 - 21:41
#1
Denne while-løkke kan vel gøre det.
StartID = Request.QueryString("ID") ' Valgte ID
' Find valgte ID
Set RS = "select * from tabel where ID=" & CStr(StartID)
' Sålænge der findes en ParentID hentes den i stedet for
do while (CInt(RS("ParentID")) <> 0)
Set RS = "select * from tabel where ID=" & RS("ParentID")
loop
' Udskriv ID
Response.Write("ID=" & RS("ID"))
01. november 2002 - 22:43
#6
også hvis du i din sql sætning tilføjer "where id = 4"
Har godt set at der er fejl i scriptet - har også fået det til at virke, men ikke når der kommer et id på..
02. november 2002 - 00:10
#7
Så prøv denne:
<%
set Con = Server.CreateObject("ADODB.Connection")
Con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("test.mdb")
StartID = CInt(Request.QueryString("ID")) ' Valgte ID
set rs = server.createobject("adodb.recordset")
sqlTable = "select * from menuarr order by ID"
rs.open sqlTable, con, 1
if not rs.eof then
Dim Cnt, LastID, ValgteID
ReDim strItems(rs.RecordCount) ' Gør plads til menunavne
arrRecords = rs.getrows()
buildTop(arrRecords) ' Overfør menunavne til strItems
for i = 0 to Cnt ' udskriv menu
if ValgteID = i then
Response.Write("<b>" & strItems(i) & "</b>"& "<br>")
else
Response.Write(strItems(i) & "<br>")
end if
next
Response.Write("Valgte: " & ValgteID & "<br>")
end if
rs.Close
Set rs = Nothing
'\\ først vores funktion der henter alle toppunkter ud
Cnt = 0
sub buildTop(arrRecords)
strDisplayTop = ""
for i=0 to ubound(arrRecords,2)
'\\ hent records hvor parentid = 0
if arrRecords (2,i) = 0 then
if arrRecords(0,i) = StartID then
ValgteID = Cnt ' Valgte ID er en hovedmenu
end if
LastID = Cnt
strItems(Cnt) = arrRecords(0,i) & ", " & arrRecords(1,i)
Cnt = Cnt + 1
buildSub arrRecords, arrRecords(0,i), 0
end if
next
end sub
'\\ vores funktion til at bygge subs
sub buildSub(arrRecords,intParentid,intIndent)
for j=0 to ubound(arrRecords,2)
'\\ her looper vi igennem vores array for at finde de records
'\\ der er sub til vores parent record
if arrRecords(2,j) = intParentid then
if arrRecords(0,j) = StartID then
ValgteID = LastID ' Her er valgte hoved ID til submenuen
end if
'\\ her opbygger vi vores "indrykning"
strIndent = ""
for x=0 to intIndent
strIndent = strIndent & " "
next
'\\ og her opbygges vores streng med subs, samt henter subs til subs ... osv
strItems(Cnt) = strIndent & arrRecords(0,j) & ", " & arrRecords(1,j)
Cnt = Cnt + 1
buildSub arrRecords, arrRecords(0,j), intIndent+1
end if
next
end sub
%>