• User Newbie

    [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.
    :gthi:


  • User Newbie

    Proprio nessuno riesce ad aiutarmi??