Filtri Group by

Pascal Pavan

Nuovo Utente
27 Ago 2012
16
0
0
Ciao,
io vorrei un tasto, che se cliccato mi raggruppi i dati in tabella per il valore di quel tasto.
Ecco il mio codice, ma non funziona =(
PHP:
echo '<form method="POST">';
if(isset($_POST['raggruppaZone'])){
echo '<input type="submit" name="groupZone" value="annulla raggruppamento">'; //In caso venga cliccato annulla ragg, ho una query che fa select * from....
}else{
echo '<input type="submit" name="groupZone" value="Raggruppa per zona">';
}
echo '</form>';

//Codice di raggruppamento
if(isset($_POST['groupZone'])){
$groupZone = mysql_query("select * from pianificazioneSettimanale group by zone");
}else{
$groupZoneAll = mysql_query("select * from pianificazioneSettimanale");
}

Qualcuno ha idee? O soluzioni alternative migliori? Alla fine dovrei fare 5 group by in questa tabella, tutte le volte riscrivere questo codice?!
Grazie =)
 
Ultima modifica di un moderatore:
Prova così:
PHP:
// definisci qui i campi per cui fare l'ordinamento
$groupFields = array(
    'groupZone' => 'Zona',
);

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    $sql = 'SELECT * FROM pianificazioneSettimanale');
    
    if (isset($_POST['group_by']) &&
        array_key_exists($_POST['group_by'], $groupFields)
    ) {
        $sql .= " GROUP BY {$_POST['group_by']}";
    }

    $query = mysql_query($sql);

    // ...
} else {
    echo <<<EOF
<form action="{$_SERVER['REQUEST_URI']}" method="post">
    <div>
        <label for="group_by">Raggruppa per:</label>
        <select name="group_by" id="group_by">
            <option value="">---------------</option>
EOF;

    foreach ($groupFields as $value => $name) {
        echo "<option value=\"{$value}\">{$name}</option>";
    }

    echo <<<EOF
        </select>
    </div>

    <div>
        <button type="submit">Invia</button>
    </div>
</form>
EOF;
}
 
Prova così:
PHP:
// definisci qui i campi per cui fare l'ordinamento
$groupFields = array(
    'groupZone' => 'Zona',
);

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    $sql = 'SELECT * FROM pianificazioneSettimanale');
    
    if (isset($_POST['group_by']) &&
        array_key_exists($_POST['group_by'], $groupFields)
    ) {
        $sql .= " GROUP BY {$_POST['group_by']}";
    }

    $query = mysql_query($sql);

    // ...
} else {
    echo <<<EOF
<form action="{$_SERVER['REQUEST_URI']}" method="post">
    <div>
        <label for="group_by">Raggruppa per:</label>
        <select name="group_by" id="group_by">
            <option value="">---------------</option>
EOF;

    foreach ($groupFields as $value => $name) {
        echo "<option value=\"{$value}\">{$name}</option>";
    }

    echo <<<EOF
        </select>
    </div>

    <div>
        <button type="submit">Invia</button>
    </div>
</form>
EOF;
}

La tabella nemmeno mi esce più così :P
 
Ciao,
nella chiave dell'array devi mettere il nome del campo in tabella con cui vuoi raggruppare
PHP:
$groupFields = array(
    'zone' => 'Zona',
);
 
stampa query ed eventuali errori
PHP:
echo $sql . "<br/>";
$query = mysql_query($sql); 
if(!$query) {
    echo mysql_error();
}
 

Discussioni simili