Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    query che dipende da un'altra query

    salve ragazzi dovrei realizzare un menu ad elenchi che va a prendere i valori da un database mysql...
    dovrei realizzare il tutto eseguendo 2 query credo,ma a seconda del campo restituito dalla prima query dovrebbe stampare i risultati della seconda query,ma non riesco a capire come fare:

    Codice PHP:
    <?
        $query 
    ="SELECT elenco FROM azienda ORDER BY id_azienda ASC";
        
    $result mysql_query($query,$db) or die(mysql_error());
        if (
    mysql_num_rows($result) > 0
        {
            while (
    $azienda mysql_fetch_assoc($result)) 
            {
                
    ?>
                            <ul class="menu">
                [*][url=""]<?=$azienda["elenco"]?>[/url]                        
                            <?
                            $query1 
    ="SELECT menu FROM menu , azienda WHERE azienda.elenco = menu.tipo_elenco";
                
    $result1 mysql_query($query1,$db) or die(mysql_error());
                if (
    mysql_num_rows($result1) > 0
                {
                    while (
    $menu mysql_fetch_assoc($result1)) 
                    {
                        
    ?>
                                            <ul>
                            [*][url=""]<?=$menu["menu"]?>[/url]
                                       [/list]
                                <?
                                     
    }
                            }   
                
    ?>
                               [/list]
                            <?
            
    }
        } 
        
    ?>
    La prima query è fissa nel senso che possiede solo 5 campi:
    AZIENDA
    PRODOTTI
    SERVIZI
    AREA CLIENTI
    ....

    Nella seconda query invece dovrebbe stampare i sottomenu di ogni risultato della prima query

    es: quando nella prima query l'elenco corrisponde ad AZIENDA, la seconda query dovrebbe stamapre:
    AZIENDA
    Il Gruppo
    Profilo Aziendale

    mentre per PRODOTTI:

    PRODOTTI
    prodottoA
    prodottoB
    etc


    Io da un idea che ho è quella di inserire un if prima della seconda query del tipo:
    Codice PHP:
    if($azienda["elenco"] == $menu[tipo_elenco]) 
    pero non mi funziona

    spero di esser stata chiara....
    saluti e grazie anticipatamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Dando per scontato che i valori di elenco in azienda sono uguali a quelli di tipo_elenco in menu, non può funzionare perchè la seconda query seleziona sempre lo stesso risultato.
    Invece dovrebbe selezionare solo le righe relative al menù in cui mi trovo in quell'istante del ciclo.
    E' un errore di logica

  3. #3
    devi fare una query con join e costruirti un array bidimensionale (io lo metterei in una funzione) poi estrai gli elementi di questo arry e ti stampi il menu (io farei una seconda funzione).

    L'ho buttata giù così... (no testata!!)
    Codice PHP:
    function costruzione_array_menu()
        {
        
    $query ="
            SELECT 
                azienda.elenco, 
                menu.menu
            FROM azienda 
            LEFT OUTER JOIN 
                menu
                ON
                azienda.elenco = menu.tipo_elenco
            ORDER BY azienda.id_azienda ASC"


        
    $result mysql_query($query) or die(mysql_error());
        
        
    $array_menu = array();
        while(
    $row mysql_fetch_row($result))
            {
            list(
    $elenco$menu) = $row;
            
    $array_menu[$elenco][] = $menu
            }
        return 
    $array_menu;
        }
        
    function 
    stampa_menu($array_menu)
        {
        
    $html '';
        if(
    is_array($array_menu) AND !empty($array_menu))
            {
            
    $html .= '<ul class="menu">';
            foreach(
    $array_menu as $chiave_principale => $elenco)
                {
                
    $html .= '[*][url=""]'.$chiave_principale.'[/url] ';
                if(
    is_array($elenco) AND !empty($elenco))
                    {
                    foreach(
    $elenco as $chiave_secondaria => $menu)
                        {
                        
    $html .= '
                                    <ul> 
                                    [*]
                                        [url=""]'
    .$menu.'[/url]
                                     [/list]'
    ;
                        }
                    }
                
    $html .= '';
                }
                    
    $html .= '[/list]';
            }
        return 
    $html;
        }
        
        
    /************STAMPA IL MENU*/
    $array_menu costruzione_array_menu();
    $formatta_html_menu stampa_menu($array_menu);
    echo 
    $formatta_html_menu

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    edit...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    oly1982...il tuo codice è perfetto..funziona benissimo...grazie mille...

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.