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

    funzione crea menu ricorsiva

    Ciao a tutti!
    Eccomi di nuovo a chiedere aiuto..
    Sto costruendo una funzione che va a prendere i dati da una tabella di categorie così strutturata:

    ric_cat_id.sup_cat_id.nome
    1.................0..........cat1
    2.................1..........cat2
    3.................1..........cat3

    l'ordine uscente dovrebbe essere questo:
    livello1->cat1
    livello2->cat2..cat3

    la funzione è:
    Codice PHP:
    function menu($cat_id 0$menu = array())
        {
            
        
    $construct_query fun_db_query ("select ric_cat_id, sup_cat_id, name 
                                         from " 
    TABLE_RICETTE_CAT 
                                         where ric_cat_id = '" 
    $cat_id "' 
                                         order by v_order"
    );
        while (
    $construct fun_db_fetch_array ($construct_query))
            {    
            
    $construct_query2 fun_db_query ("select ric_cat_id, sup_cat_id, name 
                                              from " 
    TABLE_RICETTE_CAT 
                                              where sup_cat_id = '" 
    $construct['sup_cat_id'] . "' 
                                              order by v_order"
    );
            while (
    $construct2 fun_db_fetch_array ($construct_query2))
                {
                
    $sup_cat $construct2['sup_cat_id'];
                
    $menu_new[$sup_cat] .= $construct2['ric_cat_id'];
                }
                
    $menu array_merge((array)$menu_new, (array)$menu);
                
    menu($sup_cat$menu);
            }
        return 
    $menu;
        
        } 
    con print_r all'interno della funzione l'output è il seguente:
    Array ( [0] => 23 ) (primo giro)
    Array ( [0] => 1 [1] => 23 ) (secondo giro, aggiunge categoria superiore e si ferma)

    quindi sembra che la costruisca correttamente MA con questo richiamo:


    Codice PHP:
    //visualizzo il menu delle ricette
    (isset($_GET['cat_id']) && fun_not_null($_GET['cat_id']) && is_numeric($_GET['cat_id'])) ? $cat_id $_GET['cat_id'] : $cat_id '0';
                        
    $menu = array(menu($cat_id));
                  
     
    print_r($menu); 
    l'output è il seguente:
    Array ( [0] => Array ( [0] => 23 ) )

    qualcuno mi sa aiutare a capire cosa succede? ci sbatto la testa da ieri , ho l'impressione che sia una cosa semplicissima ma non capisco dove sbaglio.

    GRAZIE!!!

  2. #2
    proprio nessuno sa capire che cosa non funziona?

  3. #3
    ok ho risolto così, se vi può essere utile:

    Codice PHP:
    function menu($cat_id '0'$sezioni_storiche=array()) { 

        
    $construct_query fun_db_query ("select sup_cat_id 
                                         from " 
    TABLE_RICETTE_CAT 
                                         where ric_cat_id = '" 
    $cat_id "' 
                                         LIMIT 1"
    );
        
    $construct fun_db_fetch_array ($construct_query);

        
    $construct_query2 fun_db_query ("select ric_cat_id, sup_cat_id, name 
                                              from " 
    TABLE_RICETTE_CAT 
                                              where sup_cat_id = '" 
    $construct['sup_cat_id'] . "' 
                                              order by v_order"
    );
        while (
    $row_sezione=fun_db_fetch_array($construct_query2))
        {
            
    $sup_cat $row_sezione['sup_cat_id'];
            
    $ric_cat $row_sezione['ric_cat_id'];
            
    $ric_name $row_sezione['name'];
            if (
    $_GET['cat_id'] == $row_sezione['ric_cat_id'])
                {
                    
    $elenco_sezioni .= '<span class="navbar_testo">' $ric_name '</span>';
                }
                else
                {
                    
    $elenco_sezioni .= '[url="' fun_href_link(FILENAME_RICETTE"]' . $ric_name . '[/url]';
                }
                
        }

        
    $sezioni_storiche[$sup_cat]=$elenco_sezioni
        
        if (
    $sup_cat>0)    $sezioni_storiche=menu($sup_cat$sezioni_storiche); 
        
        return 
    $sezioni_storiche;


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.