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

    Array associativi e order by

    Ciao a tutti. È da ormai giorni che mi sono impantanato in questo problema e non riesco a risolverlo.
    Ho una tabella mysql con le seguenti colonne: risultato_prova - categoria_auto - giorno - gara

    Dovrei raggruppare i risultati più o meno in questo modo:
    Codice PHP:
    mysql_query("SELECT categoria_auto, risultato_prova, giorno, gara FROM pdf_risultati ORDER BY gara, giorno, categoria_auto"); 
    Vorrei formattare l'array che ottengo in modo da avere un a cosa di questo tipo:

    <DIV GARA>
    <TABELLA GIORNO 1>
    <SELECT CATEGORIA 1>
    <select>
    <option>categoria auto1</option>
    <option>categoria auto2</option>
    <option>categoria auton</option>
    </select>

    <SELECT CATEGORIA N>
    <select>
    <option>categoria auto1</option>
    <option>categoria auto2</option>
    <option>categoria auton</option>
    </select>

    </TABELLA>

    <TABELLA GIORNO 2>
    <SELECT CATEGORIA 1>
    <select>
    <option>categoria auto1</option>
    <option>categoria auto2</option>
    <option>categoria auton</option>
    </select>

    <SELECT CATEGORIA N>
    <select>
    <option>categoria auto1</option>
    <option>categoria auto2</option>
    <option>categoria auton</option>
    </select>

    </TABELLA>

    </DIV GARA>

    Ovviamente non fate caso alla formattazione, ma è per farvi capire la struttura html che vorrei. Ho scritto n per che il numero dei giorni come il numero delle categorie e dei documenti può variare.
    Ho trovato un articolo molto interessante sugli array associativi per gruppi e sottogruppi di dati (http://www.garfieldtech.com/blog/php-group-by), ma non ci ho capito granchè.

    Vi ringrazio in anticipo!
    Ciao
    Rastiuz

  2. #2
    Mi rispondo da solo: raggruppare gli array uno dentro l'altro non è difficile con questa tipologia di array associativi:

    Codice PHP:

    #SE ABBIAMO 3 NIDIFICAZIONI, QUESTA È L'ULTIMA
    function render($record) {
      
    $output "<tr>\n";
      
    $output .= "<td>{$record->colore}</td>\n";
      
    $output .= "</tr>\n";
      return 
    $output;
    }

    $result mysql_query("SELECT colore, taglia, tipologia_abbigliamento FROM vestiti WHERE tipo LIKE 'vestito' ORDER BY colore, taglia, tipologia_abbigliamento");

    $set = array();

    while (
    $colore mysql_fetch_object($result)) {
      
    $set[$colore->tipologia_abbigliamento][$colore->taglia][] = $record;
    }

    #ksort($set);

    #CONTENITORE 1
    foreach ($set as $tipologia => $tipologie) {
      print 
    "<h2>{$tipologia}</h2>\n";

    #CONTENITORE 2
      
    foreach ($tipologie as $taglia => $taglie) {
        print 
    "<table>\n";
        print 
    "<caption>{$taglia}</caption>\n";
        print 
    "<tr><th>Colori</th></tr>\n";

    #CONTENITORE 3
        
    foreach ($colore as $colori) {
          print 
    render($record);
        }
        print 
    "</table>\n";
      }

    Questo è il modo migliore per visualizzare con una query i dati di una tabella raggruppati per n volte.

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.