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
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."
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
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 20 dec 2001]
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?
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."
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å
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 20 dec 2001]
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
?
------------------
essentitia preter non sans multiplicandum
PaceMedlem sedan juni 20019 024 inläggPrecis! Men... Slut på stackutrymme. ;)
(räknade looparna: 9 000 st innan felmeddelandet! :O)
Verkar som det blev en evighetsgrej det där också? ;)
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."
[Redigerat av Pace den 20 dec 2001]
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
------------------
essentitia preter non sans multiplicandum
PaceMedlem sedan juni 20019 024 inläggDet fixade sig till slut! :) :D
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!
------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."
[Redigerat av Pace den 20 dec 2001]