Ho risolto il problema del livello -1 relativo al contenuto utilizzando una select sulla secondatebella dove cat_idx = -.
Attualmente se nel db inserisco due contenuti con cat_idx uguali a -1 l'output che viene restituito è giusto, cioè i due contenuti li posiziona allo stesso livello delle categorie padri.
Ho riscontrato un altro piccolo problemino, cioè quando inserisco lo stesso cat_idx ai contenuti (diverso da -1) mi duplica la cartella che li contiene:

Uploaded with ImageShack.us
come posso risolvere?
Codice PHP:
<ul id="ul-cat" class="filetree">
<%
sql="SELECT count(*) as totali FROM primatabella"
Set rs = conn.Execute(sql)
ReDim arr(rs("totali"),9)
sql = "SELECT primatabella.cat_id, primatabella.cat_name, primatabella.cat_parent_id, primatabella.tot_subcat, secondatabella.page_id, secondatabella.page_title, secondatabella.page_content, secondatabella.reurl, secondatabella.cat_idx FROM primatabella LEFT JOIN secondatabella ON primatabella.cat_id = secondatabella.cat_idx ORDER BY primatabella.cat_parent_id"
rs.close
Set rs = conn.Execute(sql)
Do While rs.eof = false
arr(co,0)=rs("cat_id")
arr(co,1)=rs("cat_name")
arr(co,2)=rs("cat_parent_id")
arr(co,3)=rs("tot_subcat")
arr(co,4)=rs("page_id")
arr(co,5)=rs("page_title")
arr(co,6)=rs("page_content")
arr(co,7)=rs("reurl")
arr(co,8)=rs("cat_idx")
co=co+1
rs.Movenext
loop
rs.close
set rs=Nothing
call Stampafigli ("-1",0)
Sub Stampafigli ( idpadre, livello)
dim rip
for rip = 0 to ubound (arr,1)
if cint ( arr(rip,2) ) = cint (idpadre) then
if arr(rip,3) <= 0 Then
%>
[*]<span class="folder"><%=arr(rip,1)%> (<%=arr(rip,3)%>)</span>
<%
Else
%>
<li class="closed"><span class="folder"><%=arr(rip,1)%> (<%=arr(rip,3)%>)</span>
<ul>
<%call Stampafigli ( cint(arr(rip,0)) ,livello+1)%>
[/list]
<%
End If
End If
Next
End Sub
sql = "SELECT * FROM primatabella WHERE cat_idx = -1"
Set rs = conn.Execute(sql)
do while not rs.eof
If rs("cat_idx") = "-1" Then
%>
[*]<span class="file"><%=rs("reurl")%></span>
<%
Else
End If
rs.movenext
loop
rs.close
%>
[/list]