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

    Problema costruzione menu da database

    Ho un database con una tabella "categorie";
    in questa tabella ho inserito tutte le categorie del database, siano esse categorie padre o figlie. La gerarchia è determinata da una colonna chiamata "father" che referenzia gli id delle varie categorie.

    A qualsiasi categoria può corrispondere un prodotto.

    Devo costruire un menu, e quindi credo di avere bisogno di tramutare questa tabella in un array multidimensionale, con i vari padri e figli. Dopodiché, per tramutare in stile css, farò un foreach dell'array, a cui assegnerò le varie <ul> (comunque quello dell'html è un problema successivo, prima devo capire come fare l'array).

    Come fare? Sono assolutamente confuso, non riesco a capire come procedere, eppure non mi sembra un problema insormontabile. Please help.

  2. #2
    io ho risolto un problema simile in questo modo:
    Codice PHP:
        public function categories_tree($parent=0$spacer '') {
            
    $sql "select * from categories where parent = $parent order by parent";
            
    $result $this->db->fetchAll($sql);
            
    $num count($result);
            
    $spacer .= '- ';
            foreach(
    $result as $k => $v) {
                if(
    $num == || $result[$k]['parent'] == '0') {
                    
    $spacer '';
                }
                
    $this->arrCategoriesTree[$result[$k]['id']] = $spacer.$result[$k]['category'];
                
    $this->q++;
                
    $this->categories_tree($result[$k]['id'], $spacer);
            }
            return 
    $this->arrCategoriesTree;
        } 
    questo metodo dentro una classe. $arrCategoriesTree è una variabile di classe, ovviamente, puoi valorizzarlo cosi:
    Codice PHP:
    private $arrCategoriesTree = array(); 
    il metodo è richiamata da uno script php, il risultato lo passiamo a smarty:

    Codice PHP:
    $smarty->assign('loopcategorie'$c->categories_tree()); 
    infine in smarty recupero il valore passato:

    Codice PHP:
    {foreach from=$loopcategorie key="keyvar" item="itemvar"}
        {
    $itemvar}
    {/foreach} 
    se vuoi metterle in una select fa semplicemente cosi

    Codice PHP:
    <select>
    {
    html_options options=$loopcategorie}
    </
    select
    nel mio caso il value è la colonna "id" della tabella.

    non è esattamente il tuo caso ma secondo me puoi riadattarlo facilmente.
    ciao
    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  3. #3
    Molto interessante;
    nel frattempo ho risolto in un altro modo, ma cambiando l'architettura del database, però appena avrò tempo darò un'occhiata.
    grazie e ciao

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.