Código PHP:
<%
Function buscarArea(id_area,mas)
qry="SELECT * FROM AREAS WHERE prearea = '"&id_area&"' ORDER BY nombre ASC"
set rsAREAS = conn.Execute(qry)
Do While not rsAREAS.EOF
response.write rsAREAS("id_area") &" - "& rsAREAS("nombre")
qry="SELECT * FROM AREAS WHERE prearea = '"&rsAREAS("id_area")&"' ORDER BY nombre ASC"
set rsEXISTE=conn.Execute(qry)
if not rsEXISTE.EOF then
mas=mas&"-"
Call buscarArea(rsAREAS("id_area"),mas)
end if
rsAREAS.MoveNext
Loop
End Function
%>
Id_area = Identificador principal
nombre = Nombre del Área
prearea = Nombre del Área padre
Y esta función la llamo haciendo primero una búsqueda de las Áreas padres:
Código PHP:
<%
'Aqui busco las que no tienen padre, osea las que son las de hasta arriba'
qry="SELECT * FROM AREAS WHERE prearea = '' ORDER BY nombre ASC"
set rsAREAS = conn.Execute(qry)
Do While not rsAREAS.EOF
response.write rsAREAS("id_area") &" - "& rsAREAS("nombre")
qry="SELECT * FROM AREAS WHERE prearea = '"&rsAREAS("id_area")&"' ORDER BY nombre ASC"
set rsEXISTE=conn.Execute(qry)
if not rsEXISTE.EOF then
mas=mas&"-"
'Aqui comienzo a usar la función recursiva'
Call buscarArea(rsAREAS("id_area"),mas)
end if
rsAREAS.MoveNext
Loop
%>
Nota: Esta lista de árbol puede llegar a ser infinita (por eso uso recursividad)