- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [ASP CLASSIC] Funzione ricorsiva per treeview
-
[ASP CLASSIC] Funzione ricorsiva per treeview
Salve a tutti,
questo è il mio primo post e iniziamo già con un problemino fastidioso.. Ma lasciamo i convenevoli a dopo
Ho creato un sistema di treeview in ASP Classic per la visualizzazione di categorie, sottocategorie e contenuti prelevati da un db sql server 2005.
Entriamo subito nel vivo postando il codice della pagina:[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%> <li><span class="folder"><%=arr(rip,1)%> (<%=arr(rip,3)%> )</span></li> <% Else %> <li class="closed"><span class="folder"><%=arr(rip,1)%> (<%=arr(rip,3)%> )</span> <ul> <%call Stampafigli ( cint(arr(rip,0)) ,livello+1)%> </ul> </li> <% 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 %> <li><span class="file"><%=rs("reurl")%></span></li> <% Else End If rs.movenext loop rs.close %> </ul>
[/php]Attraverso una LEFT JOIN visualizzo i dati rispettivi alla primatabella, all'interno della quale si trovano tutte le categorie e sottocategorie e i dati della secondatabella all'interno della quale si trovano i contenuti legati alle categorie, rispettivamente da primatabella.cat_id e secondatabella.cat_idx.
Attraverso una normale SELECT visualizzo i contenuti che hanno come cat_idx -1, questo perchè all'interno della primatabella non esistono cat_id pari a -1, ma solo cat_parent_id.
Attualmente quando assegno a due contenuti lo stesso cat_idx, per esempio 1, lo script mi raddoppia gli array restituendo un outpout del genere:
Chi Siamo (2)
Chi Siamo (2)
bilanci (0)espandendo le categorie nella prima trovo il contenuto 1 e nella seconda il contenuto 2. Come posso ovviare al problema?
Grazie mille in anticipo.
-
Proprio nessuno riesce ad aiutarmi??