Pagina 1 di 3 123 UltimaUltima
Risultati da 1 a 10 di 29

Discussione: Treeview - Albero

  1. #1
    nofcfro è offline Utente del Forum
    Data Registrazione
    May 2012
    Messaggi
    42

    Question Treeview - Albero

    Salve,
    volevo sapere come fosse possibile realizzare (se avete qualche link, spezzone di codice...) il classico menù ad albero tenendo presente che le categorie e le sottocategorie sono prese dal database e che a sinistra della scritta sia presente il classico quadratino con il + se il menù è espandibile e - se non lo è.

    |+| Categoria
    ---|+| Sottocategoria
    -------|-| Prodotto 1

    Grazie

  2. #2
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,243
    ciao
    prova a guardare
    http://www.dynamicdrive.com/dynamicindex1/index.html
    non sono sicuro, ma mi sembra di aver visto qualcosa di simile

  3. #3
    nofcfro è offline Utente del Forum
    Data Registrazione
    May 2012
    Messaggi
    42
    No
    Sono tutti statici! A me servirebbe che si popolassero in base ai dati che ho nel database!

    L'albero che fa al caso mio può essere così: http://www.destroydrop.com/javascrip...e/default.html
    Ultima modifica di nofcfro; 11-08-2012 alle 16:13

  4. #4
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,243
    ciao
    devi combinare il js con i dati che estrai dal db

  5. #5
    nofcfro è offline Utente del Forum
    Data Registrazione
    May 2012
    Messaggi
    42
    Il file che ti fa scaricare quel sito che qui per comodità allego: alberof.zip

    Praticamente si tratterebbe di rendere dinamico solamente questo pezzo, ma come???

    Codice HTML:
    <script type="text/javascript">		<!--
    
    
    		d = new dTree('d');
    
    
    		d.add(0,-1,'My example tree');
    		d.add(1,0,'Node 1','example01.html');
    		d.add(2,0,'Node 2','example01.html');
    		d.add(3,1,'Node 1.1','example01.html');
    		d.add(4,0,'Node 3','example01.html');
    		d.add(5,3,'Node 1.1.1','example01.html');
    		d.add(6,5,'Node 1.1.1.1','example01.html');
    		d.add(7,0,'Node 4','example01.html');
    		d.add(8,1,'Node 1.2','example01.html');
    		d.add(9,0,'My Pictures','example01.html','Pictures I\'ve taken over the years','','','img/imgfolder.gif');
    		d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');
    		d.add(11,9,'Mom\'s birthday','example01.html');
    		d.add(12,0,'Recycle Bin','example01.html','','','img/trash.gif');
    
    
    		document.write(d);
    
    
    		//-->
    	</script>
    Ultima modifica di nofcfro; 11-08-2012 alle 16:59

  6. #6
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,243
    ciao
    sto cercando di capire la logica con cui si formano i link livelli e sottolivelli.
    poi dimmi: hai solo tre livelli? categoria/sottocategoria/prodotto ?
    e hai tre tabelle tra loro collegate dagli id?
    non ultimo: usi php (spero)?

  7. #7
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,243
    ciao
    penso di aver capito la logica, se (dopo esserti fatto le copie di riserva) provi a sostituire questo a quello che mi hai postato

    Codice HTML:
    <script type="text/javascript">
    <!--
    d = new dTree('d');
    
    d.add(0,-1,'My example tree');
    d.add(1,0,'Node 1','example01.html');
    	d.add(2,1,'Node 1.1','example01.html');
    		d.add(3,2,'Node 1.1.1','example01.html');
    			d.add(4,3,'Node 1.1.1.1','example01.html');
    	d.add(5,1,'Node 1.2','example01.html');
    
    d.add(6,0,'Node 2','example01.html');
    d.add(7,0,'Node 3','example01.html');
    d.add(8,0,'Node 4','example01.html');
    
    d.add(9,0,'My Pictures','example01.html','Pictures I\'ve taken over the years','','','img/imgfolder.gif');
    		d.add(10,9,'The trip to Iceland','example01.html','Pictures of Gullfoss and Geysir');
    		d.add(11,9,'Mom\'s birthday','example01.html');
    d.add(12,0,'Recycle Bin','example01.html','','','img/trash.gif');
    
    document.write(d);
    //-->
    </script>
    e verificare che venga fuori la stessa cosa, se si ho capito. (non considerare l'indentatura l'ho fatta per cercare di capire)
    aspetto le risp anche al precdente, poi (se ho capito) ti mando come intregrarlo con i dati sel db rendendolo dinamico

  8. #8
    nofcfro è offline Utente del Forum
    Data Registrazione
    May 2012
    Messaggi
    42
    Uso PHP (mentre non conosco bene javascript), le tabelle sono collegate dagli id (chiave primaria), i livelli sono solamente tre!


    Lo schema è questo:

    |+| Categoria 1
    ---|+| SottoCategoria A
    ----|-|Prodotto AA1
    ----|-|Prodotto AA2
    ----|-|Prodotto AA3
    ---|+| SottoCategoria B
    ----|-|Prodotto BB1
    ----|-|Prodotto BB2
    ----|-|Prodotto BB3

    |+| Categoria 2
    ---|+| SottoCategoria C
    ----|-|Prodotto CC1
    ----|-|Prodotto CC2
    ----|-|Prodotto CC3
    ---|+| SottoCategoria D
    ----|-|Prodotto DD1
    ----|-|Prodotto DD2
    ----|-|Prodotto DD3

    La tabella Categoria sarà intuitivamente composta così:
    id_cat
    nome_cat (es. Condomini)

    La tabella Sottocategoria:
    id_scat
    id_cat
    nome_scat (es. inquilini)

    La tabella Prodotti:
    id_prod
    id_cat
    id_scat
    nome_prod (es. stanze della casa)

    Quindi ogni nodo non sarà preimpostato ma dovrà essere generato dal database!
    Io pensavo di mettere un ciclo WHILE per generare tutti gli array, però la complicazione sta nel dirgli che nodo deve avere!!
    Grazie per il tempo

  9. #9
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,243
    ciao
    prova a guardare, considera comunque che è un'idea e non so se funzi.
    comunque verifica i nomi dei campi li ho messi un po' a caso e per cercare di far capire cosa estraggo
    Codice PHP:
    <?php
    //i dati di connessione
    //trasformo tutto il js in php
    echo "
    <script type=\"text/javascript\">
    d = new dTree('d');
    d.add(0,-1,'men&ugrave;');
    "
    ;
    $q_1=mysql_query("SELECT * FROM categorie ORDER BY categoria");
    $numero_0=1;
    //$livello=0;
    while($ri_1=mysql_fetch_array($q_1)){
        
    $livello=0;//metto il livello a zero, e riperto da 0 dopo aver elencato i prodotti
        
    $categoria=$ri_1['categoria'];
        
    $id_cat=$ri_1['id'];
        echo 
    "d.add($numero_0,$livello,'$categoria','tua_pagina.php');";//non so cosa ci deve andare al posto di tua_pagina
        
    $numero_0++;//incremento di uno
        
    $livello++;//incremento di uno diventa 1
        
    $q_2=mysql_query("SELECT * FROM sottocategoria WHERE id_categoria=$id_cat ORDER BY sottocategoria");
        while(
    $ri_2=mysql_fetch_array($q_2)){
            
    $sotto_categoria=$ri_2['sottocategoria'];
            
    $id_sotto=$id_cat=$ri_1['id_sotto'];
            echo 
    "d.add($numero_0,$livello,'$sotto_categoria','tua_pagina.php');";//non so cosa ci deve andare al posto di tua_pagina
            
    $numero_0++;//incremento di uno
            
    $livello++;//incremento di uno diventa 2
            
    $q_3=mysql_query("SELECT * FROM prodotti WHERE id_categoria=$id_cat AND id_sotto=$id_sotto ORDER BY nome_prodotto");
            while(
    $ri_3=mysql_fetch_array($q_3)){
                
    $nome_prodotto=$ri_2['nome_prodotto'];
                
    $id_prod=$ri_2['id_prodotto'];//questo può servirti se devi fare il link alla scheda prodotto
                //vedi sotto
                
    echo "d.add($numero_0,$livello,'$nome_prodotto','scheda_prodotto.php?id=$id_prod');";
                
    $numero_0++;//incremento di uno
                //qui non serve incrementare il livello
            
    }
        }
    }
    echo 
    "
    document.write(d);
    </script>
    "
    ;
    ?>
    poi ho usato le vecchie query, se la conosci è meglio che tu passi alla PDO

    p.s.
    da quello che ho capito in d.add(primo numero,secondo numero,..... il
    primo numero è un numero progressivo che si incrementa di uno ad ogni link
    secondo numero è il livello con 0 il primo, 1 il secondo ....

    se non funzia non mandarmi...

  10. #10
    nofcfro è offline Utente del Forum
    Data Registrazione
    May 2012
    Messaggi
    42
    Innanzitutto GRAZIE per il tempo
    C'è qualcosa che non va perché già dalla prima riga prende solamente una categoria (es. solo musica invece che musica e letteratura) invece che tutte
    Ho creato un piccolo file SQL così diviso per fare delle prove, sperando che un lavoro del genere possa interessare parecchie persone:

    CATEGORIA:
    Musica
    Letteratura

    SOTTOCATEGORIA:
    Pop
    Metal
    Italiana
    Inglese


    PRODOTTI:
    Abba
    Beatles
    Slayer
    Metallica
    Pirandello
    Verga
    Joyce
    Orwell


    Allego il file: esempio.zip
    Ultima modifica di nofcfro; 12-08-2012 alle 13:13

Pagina 1 di 3 123 UltimaUltima

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •