Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    elenco categorie in modo ricorsivo

    ciauz a tutti..sto rifacendo il mio sito...e sono passato da poco a php...
    volevo chiedervi un consiglio sulla tecnica da usare per creare il sistema di categorie che caratterizza tutto il sito;

    prima utilizzavo un sistema basato su un abase contenente le tabelle: Cat, SubCat, SubSubCat

    però così ero sepre limitato... perchè potevo arrivare a solo 3 livelli di profondità...e se avessi voluto creare un altro livello avrei dovuto aggiungere un altra tabella.
    lo so...è raro avere categorie così ramificate... però può succedere.

    ho pensato allora di utilizzare un ragionamento basato sulle liste stile c++...
    cioè:
    TABELLA: categorie
    CAMPI: cat_id, cat_sup, cat_titolo

    cat_sup è l'id della categoria superiore... se id_sup è 0 allora la categoria è una principale

    esempio

    id: 1; id_sup=0; titolo= Programmazione
    id: 2; id_sup=1; titolo= Php
    id: 3; id_sup=0; titolo= Sistemi Operativi
    id: 4; id_sup=2; titolo= Scripts

    seguendo la logica ecco il menù:
    Programmazione
    ==>Php
    ==>Scripts
    Sistemi Operativi


    secondo voi..questa tecnica è conveniente oppure no?
    perquale motivo?
    come prestazioni secondo voi come sarà? considerando che in alcune funzioni dovrò utilizzare la ricorsione.



    ciauz e grazie a tutti

  2. #2
    uppolo....
    lo so che è una cosa un po' ingarbugliata...
    però vi sarei davverog rato se sapeste consigliarmi...
    ciauzzz

  3. #3
    Io uso questa tecnica nel modulo catalogo del mio CMS e fila tutto liscio.

    Certo bisogna stare attenti quando si spostano le categorie di posizione a non creare delle liste chiuse (ad esempio una categoria figlia di se stessa o di una sua sottocategoria).
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  4. #4
    ti ringrazio davvero dell'aiuto...

    sto provando e sembra funzioni bene...l'unico intoppo è quando devo recuperare tutte le sottocategorie (comprese dunque anche le sotto-sottocategorie ecc) di una categoria... e metterle in un array...


    tu ci sei riuscito?
    avresti qualche dritta da darmi?

    ti ringrazio davvero!

    ciauzzz

  5. #5
    Non sò bene a cosa ti serva l'array quindi ti scrivo una funzione generica che restituisce un array contenente un elemento titolo con il titolo della categoria e figli con un altro array di cui le chiavi sono gli id dei record figli e cosi via ricorsivamente...

    Codice PHP:

    function cat_genealogy($start=0)
    {
        
        
    $row=mysql_fetch_array(mysql_query("SELECT * FROM categorie WHERE id='{$start}'"));
        
        
    $return['titolo']=$row['titolo'];
        
        
    $result=mysql_query("SELECT * FROM categorie WHERE padre='{$start}'");
        while (
    $row=mysql_fetch_array($result))
        {            
            
    $return['figli'][$row['id']]=cat_genealogy($row['id']); //ricorsiva: figli indiretti
        
    }
        
        return 
    $return;    

    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  6. #6
    grazie mille ghiaccio...è quello che mi serviva...e funziona perfettamente!!!
    ho solo un problema ora...
    riuscire a estrapolare tutti i valori salvati in quell'array...

    ho provato a "sfruttare" un altra funzione ma mi restituisce sempre un errore cgi
    CGI Error
    The specified CGI application misbehaved by not returning a complete set of HTTP headers.

    codice:
       function elenca_cat($array){
    
          if(is_array($array['figli'])){
             elenca_cat($array);
          }else{
             echo "Elemento ".$array['titolo'];
           }
        }
    ciauz e grazie ancora

  7. #7
    un errore CGI ? VVoVe: Non sò di che cosa si tratti
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  8. #8
    hummm..
    tu come faresti se dovessi "sfogliare" quell'array mostrando tutti isuoi valori?

    grazie ancora per l'aiuto...sei gentilissimo!

    ciauzz

  9. #9
    Io lo farei con un print_r()

    Non lo sò, il modo in cui lo voglio 'sfogliare' dipende da che cosa voglio farci.


    Non capisco a cosa serva la tua funzione elenca_cat() dato che per fare quello che fa questa funzione basterebbe fare una query SQL che seleziona il titolo di tutte le categorie.
    Michele Castellucci
    Sviluppatore Web del Consorzio CottonBit
    Consorzio Cottonbit
    Risorse per la programmazione
    Dire Fare Programmare!

  10. #10
    allora...mi spiego meglio...
    io devo riuscire a fare in modo di avere in una variabile le id delle categorie inferiori...perchè così poi posso fare una query dinamica creando la condizione where in base alle varie id

    perchè ad esempio la sezione id:5 chiamata: Articoli
    ha delle sottocategorie che a loro volta hanno degli articoli... e quindi ho la necessità di visualizzarli tutti in un colpo solo.

    altra cosa... mi è utilissimo l'array contenente anche il titolo perchè dovrò anche creare una barrà di navigazione tra le categorie

    ciauzzzz spero di essermi spiegato meglio

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