Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    Ripercorrere albero gerarchico

    Allora, in una tabella ho creato un sistema di categorie, dove in base a un campo si definiscono i padri.

    Es: Informatica
    id=1
    padre=0 (nessun genitore)

    Es: Webmaster
    id=4
    padre=1 (Informatica)

    Es: Php
    id=11
    padre=4 (Webmaster)
    Come faccio, a partire dall'id 11, ripercorrere il percorso e stampare

    Informatica -> Webmaster -> Php

    Per semplicità ho creato una funzione che ritorna il campo padre, dato l'id.

    Ho provato a fare dei cicli ma mi sono incasinato.

    Quel che ho fatto io è questo

    Codice PHP:

        $a
    =$categoria_selezionata;
        
    $diverso=0// 0 = nessun genitore
        
    while($diverso!=$categoria_selezionata){
            if(
    getPadre($a)==$diverso){
                
    $diverso=getID($a);
                echo 
    getNome($a);    
            }
            else
                
    $a=getPadre($a);
        } 
    getPadre restituisce il padre della categoria
    getID restituisce l'id della categoria
    getNome restituisce il nome

    Dove sbaglio?

  2. #2
    Ciao!
    Codice PHP:
    <?php
    function get_CurrPath($id)
    {
        
    $path = array();
        
    $i 0;
        while (
    $id != && $i 100)
        {
            
    $query mysql_query("SELECT * FROM tua_abella WHERE id = '$id'");
            
    $result mysql_fetch_array($query);
            
    $id $result['parent'];
            
    $path[] = array($result['id'], rtrim($result['name']));
            
    $i++;
        }

        return 
    array_reverse($path);
    }

    function 
    print_CurrPath(&$path)
    {
        
    $retval '';

        for(
    $i 0$i <= count($path) - 1$i++)
        {
            if (
    $i == count($path) - 1)
            {
                
    $retval .= '<strong style="color: #FF0000 ">' $path[$i][1] . '[/b]';
            }
            else
            {
                
    $retval .= '[url="?c=' $path[$i][0] . '"]' $path[$i][1] . '[/url] &raquo; ';
            }
        }

        echo 
    $retval;
    }
    ?>
    Devi solo modificare i campi secondo le tue esigenze...
    Questo lo uso per la mia directory sul mio sito, te l'ho modificato un pò perchè il mio ha qualche cosa in più che dubito ti serva!
    Comunque dovrebbe andare!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Avrei preferito una correzione al mio codice, poichè teoricamente a me sembrava dovesse funzionare.

    Il fatto è che non è un problema visualizzare l'albero, ma andare all'indietro..

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.