Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396

    Funzione ricorsiva e output

    Ciao ragazzi,

    da qualche giorno a questa parte mi trovo alle prese con la gestione di categorie infinite.
    Tramite una funzione ricorsiva riesco a stampare padri - figli - contenuti che attraverso l'implementazione di un tree in jquery riesco a far visualizzare in modo dinamico e fluido.

    Inizialmente ho questa situazione:

    Visualizzazione semplice iniziale file ASP
    Codice PHP:
            <ul id="example" class="filetree">
                <%            
                            ............
    QUERY......
                    
    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("id_contenuto"
                        
    arr(co,5)=rs("titolo_contenuto"
                        
    arr(co,6)=rs("contenuto"
                        
    co=co+1
                    rs
    .Movenext
                    loop
                    rs
    .close
                    set rs
    =Nothing
                    call Stampafigli 
    ("-1",0
                    
    Sub Stampafigli idpadrelivello)
                        
    dim rip
                        
    for rip 0 to ubound (arr,1)
                            if 
    cint arr(rip,2) ) = cint (idpadrethen
                                
                        
    %>
                                    <
    li class="closed"><span class="folder"><%=arr(rip,1)%></span>
                                        <
    ul>
                                            <
    li class="closed"><span class="folder"><%=arr(rip,1)%></span>
                                                <
    ul>
                                                    [*]<
    span class="file"></span>
                                                [/list]
                                            
                                        [/list]
                                    
                        <%
                            
    End If
                        
    Next
                    End Sub
                
    %>
            [/list] 
    Output semplice



    Uploaded with ImageShack.us

    Quando vado ad effettuare la sub "stampafigli" arrivano i problemi di visualizzazione, cioè quando viene inserita i tag si raddoppiano e vengono chiusi male.... Esempio

    Codice PHP:
                                    <li class="closed"><span class="folder"><%=arr(rip,1)%></span>
                                        <
    ul>
                                            
                                            <
    li class="closed"><span class="file"><%call Stampafigli cint(arr(rip,0)) ,livello+1)%><%=arr(rip,5)%></span>
                                        [/list] 
    Vista html

    Codice PHP:
            <ul id="example" class="filetree">
                
                                    <
    li class="closed"><span class="folder">Hardware</span>
                                        <
    ul>
                                            
                                            <
    li class="closed"><span class="file"></span>
                                        [/list]

                                    
                        
                                    <
    li class="closed"><span class="folder">Software</span>
                                        <
    ul>
                                            
                                            <
    li class="closed"><span class="file"></span>
                                        [/list]
                                    
                        
                                    <
    li class="closed"><span class="folder">Console</span>
                                        <
    ul>

                                            
                                            <
    li class="closed"><span class="file">
                                    <
    li class="closed"><span class="folder">Microsoft</span>
                                        <
    ul>
                                            
                                            <
    li class="closed"><span class="file">XBOX-360</span>
                                        [/list]
                                    
                        
                                    <
    li class="closed"><span class="folder">Sony</span>

                                        <
    ul>
                                            
                                            <
    li class="closed"><span class="file">Playstation-3</span>
                                        [/list]
                                    
                        </
    span>
                                        [/list]
                                    
                        
            [/list] 


    Uploaded with ImageShack.us

    Non riesco a capire perchè la sub mi raddoppia tutto scatenando errori nell'output, qualcuno di voi può aiutarmi a capire meglio in merito a dove inserire la call per poter personalizzare qualsiasi visualizzazione a tree mi farebbe un favorone..

    Spero di essere stato chiaro (anche se capisco che può rimanere un pò contorto è più facile a vedersi che spiegarsi )

  2. #2
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    Up!

  3. #3
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    RiUp! help

  4. #4
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    Ciao ragazzi, ho bisogno di aiuto

    utilizzo la funzione ricorsiva presente in questo post per visualizzare il contenuto di una tabella come un normale treeview.

    Codice PHP:
                                                        <%            
                                                            
    sql="SELECT count(*) as totali FROM primatabella"
                                                            
    Set rs conn.Execute(sql)
                                                            
    ReDim arr(rs("totali"),8)
                                                            
    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 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"
                                                                
    co=co+1
                                                            rs
    .Movenext
                                                            loop
                                                            rs
    .close
                                                            set rs
    =Nothing
                                                            call Stampafigli 
    ("-1",0
                                                            
    Sub Stampafigli idpadrelivello)
                                                                
    dim rip
                                                                
    for rip 0 to ubound (arr,1)
                                                                    if 
    cint arr(rip,2) ) = cint (idpadrethen
                                                                        
    If arr(rip,3) <= 0 Then
                                                                
    %>
                                                                            [*]<
    span class="folder"><input name="check_cate" type="radio" value="<%=arr(rip,2)%>"/><%=arr(rip,1)%> (<%=arr(rip,3)%>)</span>    
                                                                            

                                                                <%
                                                                        Else
                                                                %>
                                                                            <
    li class="closed"><span class="folder"><input name="check_cate" type="radio" value="<%=arr(rip,2)%>"/><%=arr(rip,1)%> (<%=arr(rip,3)%>)</span>
                                                                                <
    ul>    
                                                                                    <%
                                                                                        If 
    isnullarr(rip,4) ) Then
                                                                                        
    Else
                                                                                    %>
                                                                                            [*]<
    span class="file"><%=arr(rip,7)%></span>
                                                                                    <%
                                                                                        
    End If
                                                                                    %>
                                                                                            <%
    call Stampafigli cint(arr(rip,0) ) ,livello+1)%>
                                                                                [/list]
                                                                            
                                                                <%
                                                                        
    End If
                                                                    
    End If
                                                                
    Next
                                                            End Sub
                                                        
    %>
                                                    [/list] 
    il risultato è questo:



    Uploaded with ImageShack.us

    passo alla spiegazione:

    l'array chi siamo, bilanci, contatti hanno come parent_id -1 ciò significa che sono elementi padre.

    gli array azienda, dati societari sono elementi figli di chi siamo, quindi hanno come parent_id il cat_id di chi siamo (cioè 1).

    all-azienda è l'array del contenuto finale presente nella tabella secondatabella che visualizzo attraverso la JOIN.

    Il mio problema è che non riesco a visualizzare il contenuto finale allo stesso livello dei contenuti padri, in pratica se io NON volessi inserire il contenuto all'interno di una categoria non visualizzerei l'output.

    Come posso fare per avere una situazione simile?



    Uploaded with ImageShack.us

    Spero di essere stato il più chiaro possibile, sarà per la giornata particolarmente stressante ma non riesco a venirne fuori da solo.....

    Grazie in anticipo per la disponibilità!

  5. #5
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    Ok, dopo averci dormito sopra...

    E' ovvio che non mi fa vedere il livello -1 relativo al file perchè cat_id non trova una corrispondenza nel campo cat_idx .

    Oggi che ho un pò di tempo mi metto a lavoro, aspetto vostri consigli e considerazioni che sono sempre ben accetti

  6. #6
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    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 idpadrelivello)
                                                                
    dim rip
                                                                
    for rip 0 to ubound (arr,1)
                                                                    if 
    cint arr(rip,2) ) = cint (idpadrethen
                                                                        
    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] 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.