Pagina 3 di 22 primaprima 1 2 3 4 5 13 ... ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 217
  1. #21
    [supersaibal]Originariamente inviato da bubu77
    In pratica aveva un campo nel quale venivano concatenati gli id della struttura.[/supersaibal]
    L'ho usato anche io per dei sitini che avevano un numero di categorie molto limitato. Non è per niente scalabile, sicuramente da scartare per progetti più generici.

  2. #22
    [supersaibal]Originariamente inviato da skidx
    L'ho usato anche io per dei sitini che avevano un numero di categorie molto limitato. Non è per niente scalabile, sicuramente da scartare per progetti più generici. [/supersaibal]
    Io l'ho scartato a priori

    Dove il progetto lo permetteva limitavo a padre e figlio tagliando la testa al toro

  3. #23
    Ciao M4rko e tutti voi!
    complimenti per il bellissimo articolo, che ho gia letto e pensò che riprenderò più avanti.
    Devo strutturare una sorta di albero, ma non so come fare, mi dareste una mano? penso che dovrebbe essere un grafo alla fine
    http://forum.html.it/forum/showthrea...hreadid=804191
    grazie
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  4. #24
    Ciao a tutti w compilimenti per l'articolo, molto interessante!

    Ho trovato un errore di sintassi :

    http://freephp.html.it/articoli/view...p?id=165&pag=3


    Codice PHP:
    <?php
    // Inclusioni necessarie
    require_once 'mysqlconnect.php';


    require_once 
    'nestedset.php'

    // Piero, id=6
    Manca il punto e virgola nel recondo require!

  5. #25
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    [supersaibal]Originariamente inviato da Markus_2889
    Ho trovato un errore di sintassi[/supersaibal]
    Un piccolo svarione
    L'ho subito segnalato, grazie
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  6. #26
    Abbastanza contorto ma semplicemente spettacolare! VVoVe:
    Ma come fare nel caso si voglia espandere l'albero?
    Esempio per visualizzare una cosa del genere?

    Massimiliano (6) id -> 1
    - Francesco (5) id -> 2
    -- Mario (0) id -> 3
    -- Luigi (0) id -> 4
    -- Fabio (2) id -> 5
    --- Piero (0) id -> 6
    --- Gianni (0) id -> 7

    Grazie a tutti!
    What is the |\/|atrix?

  7. #27
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    "espandere l'albero" nel senso di stamparlo a video?

    Puoi usare gli esempi proposti sull'articolo di sitepoint con la funzione display_tree() riadattandoli al tuo DB
    Naturalmente l'approccio cambia in base all'implementazione che hai scelto:

    Adjacency list:
    codice:
    function display_tree($parent, $level) {
       $sql = "SELECT id_impiegato FROM personale WHERE id_capo={$parent}";
       $result = mysql_query($sql);
    
       while ($row = mysql_fetch_array($result)) {
           echo str_repeat('-',$level).$row['id_impiegato']."
    ";
           display_tree($row['id_impiegato'], $level+1);
       }
    }
    
    // poi richiami la funzione, partendo dalla radice
    display_tree(0, 0);
    Nell'articolo la radice ha come "padre", nel campo id_capo, il valore NULL
    Per usare questa funzione conviene usare il valore 0, immaginando che gli id siano numeri interi positivi (da 1 in su quindi)

    Modified Preorder Tree Traversal:
    codice:
    function display_tree($root) {
       $sql = "SELECT sx, dx FROM personale WHERE id={$root}";
       $result = mysql_query($sql) or die(mysql_error());
       $row = mysql_fetch_array($result);
    
       $right = array();
    
       $sql = "SELECT id, sx, dx FROM personale WHERE sx BETWEEN {$row['sx']} AND {$row['dx']} ORDER BY sx ASC";
       $result = mysql_query($sql) or die(mysql_error());
    
       while ($row = mysql_fetch_array($result)) {
           if (count($right)>0) {
               while ($right[count($right)-1]<$row['dx']) {
                   array_pop($right);
               }
           }
    
           echo str_repeat('-',count($right)).$row['id']."
    ";
    
           $right[] = $row['dx'];
       }
    }
    
    // poi la richiami
    display_tree(1);
    Entrambe queste funzioni stampano l'albero indicando solo l'id di ciascun record. Con poche modifiche si può adattare il tutto inserendo il nome di fianco all'id, oppure inserendo il tutto in un tag <select>, ecc.ecc.
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  8. #28
    Ottimo grazie! Era proprio quello che volevo fare io!
    Ho modificato lo script per far apparire anche il nome accanto all'id, ma non so come modificarlo per far apparire anche il numero degli impiegati che ogni utente ha sotto es: Massimiliano, id 1, 6 impiegati sotto di lui..
    What is the |\/|atrix?

  9. #29
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    numero di figli = (dx-sx-1) / 2

    naturalmente non funziona con l'adjacency list ma solo con il secondo metodo
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  10. #30

    Come navigarci???

    Ho provato a creare una navigazione nell'albero, ma ho problemi nell'associare ad ogni link il proprio id!
    Cioè, ipotizzando che io abbia una categoria principale (ROOT con id 1) ed una categoria sotto di questa (ROOT2 con id 2):
    Quando arrivo alla index tutto va bene....
    --> ROOT (Con 1 cat contenuta e che si collega all'id 2)
    Ma il problema comincia quando clicco su "ROOT"... arrivo alla pagina così composta:
    --> ROOT (Con 0 cat contenuta e che si collega all'id 3) --> ROOT2 (Con 0 cat contenuta e che si collega all'id 3)
    che dovrebbe essere cosi:
    --> Root (Con 1 cat contenuta e che si collega all'id 2) --> ROOT2 (Con 0 cat contenuta e che si collega all'id 3 solo se esite)

    Help!

    Questi sono i codici che attualmente ho:

    Pagina index.php
    Codice PHP:
    $path ns_get_path($id);

    foreach (
    $path as $p) {
        echo 
    "-> {$p} ";

    Funzione
    Codice PHP:
    function ns_get_path($id)
    {
            global 
    $tabella;
        
    // Assicuriamoci di avere un intero
        
    $id = (int)$id;
        
    // Il percorso dalla radice al nodo
        
    $path = array();

        
    // Recupero i valori "sx" e "dx" del nodo
        
    $sql "SELECT sx, dx FROM $tabella WHERE id={$id}";
        
    $res mysql_query($sql);
        
    $line mysql_fetch_assoc($res);
            
    $figliROUND(($line['dx']-$line['sx']-1)/2);
            
    $newid $id+1;
        
        
    // Recupero il percorso
        
    $sql "SELECT nome FROM $tabella WHERE sx <= {$line['sx']} AND dx >= {$line['dx']} ORDER BY sx ASC";
        
    $res mysql_query($sql);
        while (
    $line mysql_fetch_assoc($res)) {
        
    $path[] = "<a href=\"index.php?id=$newid\">".$line['nome']."</a> (".$figli.")";
         
     
        }
        
        
    // Restituisco il risultato
        
    return $path;


    Mi date una mano perfavore? Grazie!
    What is the |\/|atrix?

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.