Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Desperado cerca consiglio per menu ad albero

    Ciao a tutti

    Navigando nel forum ho trovato 1 menu ad albero molto carino queso è il link del post:
    http://forum.html.it/forum/showthrea...ht=menu+albero

    sto provando a rendere dinamico il menu cercando di avere qualcosa ad infiniti sottolivelli ...ma anche arrivare a 4 sarebbe già buono...

    questa è la struttura del menu:

    <script type="text/javascript">
    <!--
    d = new dTree('d');
    d.add(0,-1,'');
    d.add(1,0,'pippo','example01.asp');
    d.add(2,1,'topolino','example01.asp');
    d.add(3,2,'paperino','example01.asp');
    d.add(4,3,'pluto','example01.asp');
    document.write(d);
    //-->
    </script>

    Tutte le voci che hanno il secondo numero uguale a zero sono di primo livello ...le altre si aggregano mettendo al posto dello zero il relativo numero della voce padre

    La tabella nel DB è così strutturata:

    IDMenu(chiave)------IDPadre-------voce

    Io ho fatto 4 cicli annidati ma fa un pochino di confusione o meglio ...ho fatto confusione con i numeri ...

    Qualcuno sa se da quella struttura io posso fare un primo ciclo dove pesco tutte le voci di primo livello e poi 1 solo secondo ciclo annidato per costruire tutti i sottomenu che sono legati?

    Io per ricavare le voci di primo livello pesco tutte quelle che hanno IDPadre = zero

    (struttura db)
    IDMenu(chiave)------IDPadre-------voce
    ---100---------------0------------pippo
    ---101---------------100----------voce di sottomenu

    poi per pescare i sottomenu e sapere a quale voce sono legati cerco un confronto fra IDMenu e IDPadre

    io davvero spero di essermi spiegato bene sono 2 gg che cerco di andarcene fuori e sto facendo ---> +

  2. #2
    Ci sono quasi ...

    Faccio 2 cicli annidati sulla stessa tabella, ho il problema che le voci si secondo livello fanno sempre riferimento alla prima voce di primo livello esempio:

    d.add(1,0,'Voce1','index.asp');



    d.add(2,1,'voce2','index.asp');


    d.add(3,0,'Voce11','index.asp');



    d.add(4,1,'voce22','index.asp');


    la voce22 invece di avere 4,1 dovrebbe avere 4,3 ...questo il mio ciclo:

    <%
    Do while not Menu.EOF
    IDMenu = Menu("IDMenu")
    voce = Menu("voce")
    conta = conta + 1
    %>
    d.add(<%=(conta)%>,0,'<%=(voce)%>','index.asp');


    <%
    Dim voce2, conta2, conta3, IDSecondo
    set Menu2 = Server.CreateObject("ADODB.Recordset")
    sql = "select * from Menu where IDPadre = " & IDMenu
    Menu2.ActiveConnection = cn
    Menu2.Open sql, cn
    conta2 = conta
    conta3 = 0
    %>
    <%
    Do while not Menu2.EOF
    IDSecondo = Menu2("IDMenu")
    voce2 = Menu2("voce")
    conta2 = conta2 + 1
    conta3 = conta3 + 1
    %>
    d.add(<%=(conta2)%>,<%=(conta3)%>,'<%=(voce2)%>',' index.asp');

    <%
    Dim voce3, conta4, conta5
    set Menu3 = Server.CreateObject("ADODB.Recordset")
    sql = "select * from Menu where IDPadre = " & Menu2("IDMenu")
    Menu3.ActiveConnection = cn
    Menu3.Open sql, cn
    conta4 = conta2
    conta5 = 0
    %>


    <%
    Do while not Menu3.EOF
    IDSecondo = Menu3("IDPadre")
    voce3 = Menu3("voce")
    conta4 = conta4 + 1
    conta5 = conta5 + 1
    %>
    d.add(<%=(conta4)%>,<%=(conta2)%>,'<%=(voce3)%>',' index.asp');




    <%
    Menu3.movenext
    loop
    %>




    <%
    conta2 = conta4
    Menu2.movenext
    loop
    %>

    <%
    conta = conta2
    Menu.movenext
    loop
    %>

  3. #3

    CI SONO RIUSCITO !!!

    SOLO che se voglio aggiungere 1 altro sottolivello lo devo aggiungere anche nel codice ...ma penso che 4 livelli non siano pochi

    :rollo:

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 © 2026 vBulletin Solutions, Inc. All rights reserved.