Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573

    Formattazione risultati query join

    Ciao a tutti

    Ho come il sospetto (IO= ) di sbagliare l'approccio durante la formattazione & stampa a video dei risultati delle query quando utilizzo le "join":

    ho due Tabelle:

    1 - Tabella cat_vini

    | id | nome_cat |
    --------------------------
    | 1 | chianti |
    | 2 | montepulciano |

    2 - Tabella vini

    | id | ref_cat_vini | etichetta |
    -------------------------
    | 1 | 1 | chianti1 |
    | 2 | 2 | montepulciano1 |
    | 3 | 1 | chianti2 |

    utilizzo il codice:
    Codice PHP:
    $query='
    SELECT *
            ,a.id as idcategoria
            ,b.id as idprodotto
    FROM cat_vini a
        LEFT JOIN vini b ON b.ref_cat_vini=a.id
    '
    ;
    $res=mysql_query($query) or die("errore query1:
    "
    .mysql_error());

    while(
    $riga=mysql_fetch_assoc($res)){
          
    $idcategoria=$riga['idcategoria'];
          
    $idprodotto=$riga['idprodotto'];

          
    $risu[$idcategoria]['ncat']=$riga['nome_cat'];
          
    $risu[$idcategoria]['comp'][$idprodotto]['n_etichetta']=$riga['etichetta'];
    }

    foreach(
    $risu as $k => $v){
        echo
    '<h1>'.$v['ncat'].'</h1>';
        foreach(
    $v['comp'] as $kk => $vv){
            echo
    '<span>'.$vv['n_etichetta'].'</span>
    '
    ;
        }

    per ottenere una visualizzazione del tipo:
    Codice PHP:
    cat1
         prodotto 0
         prodotto n 
    cat2
         prodotto 0
         prodotto n 
    i miei dubbi sono:

    1 - E' possibile utilizzare un'unica query che mi evita la creazione di un array ad hoc per raggruppare per categoria?
    2 - E' meglio utilizzare una query per ogni categoria, se prevedo che le categorie saranno poche, in termini di risorse utilizzate?
    3 - Ma il foreach è davvero così sconsigliabile come si dice in giro (specie un foreach indentato)?


    grazie in anticipo per i consigli

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    $query mysql_query("select vini.id,cat_vini.nome_cat,vini.etichetta
                          from vini inner join cat_vini on cat_vini.id = vini.ref_cat_vini
                          order by nome_cat"
    ) or die(mysql_error() );
                          
    $categoria '';
    while (
    $row mysql_fetch_assoc($query) ) 
    {
        if (
    $row['nome_cat'] != $categoria 
        {
        echo 
    "[b]$row[nome_cat][/b]";
        echo 
    "
    "
    ;
        echo 
    $row['etichetta'];
        echo 
    "
    "
    ;
        
    $categoria $row['nome_cat'];
        }
        else 
        {
        echo 
    $row['etichetta'];
        echo 
    "
    "
    ;
        }


  3. #3

    .........

    Ciao.
    Ma il foreach è davvero così sconsigliabile come si dice in giro (specie un foreach indentato)?
    Ma da post fatti anche in altri forum no
    anzi è consigliato l'uso pratico e veloce.
    Take a look here
    foreach indentato
    Ma se posso lo evito

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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