La funzione ricorsiva è sicuramente una soluzione.
La funzione dovrebbe fare questo:
passi come parametro l'id categoria
seleziona i dati della categoria passata e li visualizza
seleziona tutti i figli
se i figli esistono fa un ciclo in cui richiama se stessa passando l'id categoria figlio.
Per esempio:
codice:
function mostracategorie (idcat)
dim strq, rscat, rsfigli
strq="select * from categorie where idcategoria = " & idcat
set rscat=conn.execute(strq)
if not rscat.eof then
response.write rscat("nomecategoria") & "
"
strq="select * from categorie where idgenitore = " & idcat
set rsfigli=conn.execute(strq)
while not rsfigli.eof
mostracategorie(rsfigli("idcategoria"))
rsfigli.movenext
wend
end if
end function