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

    Lista ad albero per categorie e sottocategorie

    Salve,
    ho la data funzione per stampare a video le categorie e le varie sotto categorie.

    Il database è strutturato in questa maniera
    codice:
    Tabella "categorie"
    id_cat
    id_parent
    name
    Per richiamare i dati e ordinarli secondo le varie sotto categorie ho la seguente funzione
    Codice PHP:
    function FamilyTree($id$list) {
            
    $output '';
            
    $cat_id $id;
            
    $arr = array();
                
            while(
    $id != && strlen($id) > 0) {
                
    $arr[] = $id;
                
    $id $list[$id]['parent'];
            }
            
            for(
    $i count($arr) -1$i >= 0$i--) {
                
    $cat $list[$arr[$i]];
                
    $output .= $cat['name'];
                if(
    $i 0) {
                    
    $output .= ' - ';
                }
            }
            return array(
    'name' => $output'cat_id' => $cat_id);
        }
        function 
    GetCategories() {
            
    $conn = new Connection;
            
    $result $conn->query("SELECT * FROM categorie ORDER BY cat_id");
            
    $categories = array();
            while(
    $row $conn->fetch_array($result)) {
                
    $categories[$row['cat_id']] = array (
                    
    'id' => $row['cat_id'],
                    
    'name' => $row['name'],
                    
    'parent' => $row['parent_id']
                );
            }
            
    $conn->close();
            return 
    $categories;
        } 
    Che richiamo in questa maniera
    Codice PHP:
    $conn = new Connection;
    $result $conn->query("SELECT * FROM categorie ORDER BY cat_id");
    $cat = array();
    while(
    $row $conn->fetch_array($result)) {
        
    $cat[] = $category->FamilyTree($row['cat_id'],$category->GetCategories());
    }
    sort($cat);
    for(
    $i=0;$i<count($cat);$i++) {
        echo 
    $cat[$i]['name'].'
    '
    ;

    Il risultato è il seguente

    codice:
    Categoria 1
    Categoria 1 - Sotto-categoria 1
    Categoria 2
    Categoria 3
    Categoria 3 - Sotto-categoria 3
    Categoria 3 - Sotto-categoria 3 - Sotto-sotto-categoria 3
    Come vedete mi stampa a video tutto il percorso, io vorrei che mi ricreasse una struttura ad albero indentata ma senza tutto il percorso... qualcosa di simile a
    codice:
    Categoria 1
     - Sotto-categoria 1
    Categoria 2
    Categoria 3
     - Sotto-categoria 3
      - Sotto-sotto-categoria 3
    Probabilmente penso ci sia da aggiungere anche un campo per l'ordinamento nel database.. correggetemi se sbaglio e PF aiutatemi a risolvere questo mio problema
    Grazie 1000
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

  2. #2
    Nessuno che riesce ad aiutarmi? Qualche consiglio?
    La rovina del mondo sara' l'indifferenza. Ma chi se ne frega!!

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.