PaceMedlem sedan juni 20019 024 inläggJaja, jag fick lösa det med joins.
Har lagt alla kategorier i en och samma tabell. Men nu vill jag rita upp en snygg Select-lista där jag spaltar upp kategorierna med underkategorierna under. Hur gör jag det?
Link_Categories
---------------
Cat_ID - Cat_Name - Cat_ParentID
Där det sista fältet gör att posten motsvarar en underkategori till en överkategori (Cat_ID).
Exempel:
1 - Film - null
2 - Företag - null3
3 - Svensk - 1
4 - Uthyrning - 2
[b]Resultat:[/b]
Film
- Svensk
Företag
- Uthyrning
LLarsGMedlem sedan dec. 200012 464 inlägg sub getTree(connect,id,level)
dim sql,rs,i
if isnull(id) then
sql = "select cat_id,cat_name from link_categories where parent_id is null"
else
sql = "select cat_id,cat_name from link_categories where parent_id = " & id
end if
set rs = connect.execute(sql)
while not rs.eof
for i = 0 to level - 1
response.write "-"
next
response.write rs("cat_name") & "<br>"
getTree connect,rs("cat_id"),level+1
if level = 0 then
response.write "<br>"
end if
rs.movenext
wend
rs.close
set rs = nothing
end sub
set connect = server.createobject("adodb.connection")
connect.open "dsn"
getTree connect,null,0
connect.close
set connect = nothing
PaceMedlem sedan juni 20019 024 inläggBlev tyvärr en evighetsgrej det där
.
Finns det inget annat sätt så att man kör med färre SQL satser? T.ex. att ladda in allt i en matris och sedan köra sorteringen från ASP koden?
LLarsGMedlem sedan dec. 200012 464 inlägg Det är en fördel om man gör movenext också.
while not rs.eof
for i = 0 to level - 1
response.write "-"
next
response.write rs("cat_name") & "<br>"
getTree connect,rs("cat_id"),level+1
if level = 0 then
response.write "<br>"
end if
[b]rs.movenext[/b]
wend
/r
Det är fördel om man skriver rätt också
LLarsGMedlem sedan dec. 200012 464 inlägg
T.ex. att ladda in allt i en matris och sedan köra sorteringen från ASP koden?
så här alltså
sub getTree(a,id,level)
dim i,j
for i = 0 to ubound(a,1)
if a(i,2) = id or ( isnull(id) and isnull(a(i,2)) then
for j = 0 to level - 1
response.write "-"
next
response.write a(i,1) & "<br>"
getTree a,a(i,0),level+1
if level = 0 then
response.write "<br>"
end if
end if
next
end sub
set connect = server.createobject("adodb.connection")
connect.open "dsn"
set rs = connect.execute("select * from link_categories")
if not rs.eof then
a = rs.getrows()
getTree a,null,0
end if
?
PaceMedlem sedan juni 20019 024 inläggPrecis! Men... Slut på stackutrymme. 
(räknade looparna: 9 000 st innan felmeddelandet!
)
Verkar som det blev en evighetsgrej det där också? 
LLarsGMedlem sedan dec. 200012 464 inlägg Hmm
sub getTree(a,id,level,startAt)
dim i,j
for i = startAt to ubound(a,1)
if a(i,2) = id or ( isnull(id) and isnull(a(i,2)) then
for j = 0 to level - 1
response.write "-"
next
response.write a(i,1) & "<br>"
getTree a,a(i,0),level+1,i+1
if level = 0 then
response.write "<br>"
end if
end if
next
end sub
set connect = server.createobject("adodb.connection")
connect.open "dsn"
set rs = connect.execute("select cat_id, cat_name, cat_parentID from link_categories order by cat_parentID")
if not rs.eof then
a = rs.getrows()
getTree a,null,0,0
end if
PaceMedlem sedan juni 20019 024 inläggDet fixade sig till slut!

Du har råkat använda index 1 istället för 2 i matrisen:
sub getTree(a,id,level,startAt)
dim i,j
for i = startAt to ubound[b](a,2)[/b]
if [b]a(2, i)[/b] = id or ( isnull(id) and isnull([b]a(2,i)[/b])) then
for j = 0 to level - 1
response.write "-"
next
response.write [b]a(1, i)[/b] & "<br>"
getTree a, [b]a( 0, i)[/b], level+1, i+1
if level = 0 then
response.write "<br>"
end if
end if
next
end sub
Jag tackar ödmjukast!
Du är en sann tillgång till wF, LarsG!