[PHP] Aiuto SELECT DISTINCT / GROUP BY

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Salve,
qualcuno può aiutarmi per favore?

Ho una tabella sql con i seguenti campi:

Data - Ora - Evento - Luogo

Vorrei che recuperando tutti i dati la data uguale apparisse una sola volta mentre tutti gli altri campi normalmente, in questo modo:

Data - Ora - Evento - Luogo
x | 1 | a | %
x | 2 | b | &
x | 3 | c | *
y| 1 | a | %
y| 2 | b | &
y| 3 | c | *

Vorrei ottenere:

x | 1 | a | %
| 2 | b | &
| 3 | c | *
y| 1 | a | %
| 2 | b | &
| 3 | c | *

Ho provato un DISTINCT e GROUP BY, ma non funziona.
Grazie mille in anticipo!
 
ciao
prova così
PHP:
//dati di comnnessione
$ris_1=mysqli_query($connessione,"SELECT data FROM tabella GROUP BY data ORDER BY data");
while($riga_data=mysqli_fetch_assoc($ris_1)){
    $data=$riga_data['data'];
    echo "$data<br />";
    $ris_2=mysqli_query($connessione,"SELECT ora, evento, luogo FROM tabella WHERE data='$data' ORDER BY ora");
    while($riga=mysqli_fetch_assoc($ris_2)){
        echo $riga['ora']." | ".$riga['evento']." | ".$riga['luogo']."<br />";
    }
    echo "<br />";
}
//....
 
Ciao, tutta la pazienza del mondo, figurati!
Dunque, come mi hai detto qualche tempo fa la data è formattata così:

implode("-", array_reverse(explode("-", $riga_data['Start_Date'])))
 
ciao
fatti questa funzione che poi userai dove ti serve
PHP:
<?php
function data_completa($d){
    //la data deve essere nel formato yyyy-mm-gg
    $giorno=array('','lunedì','martedì','mercoledì','giovedì','venerdì','sabato','domenica');
    $ex=explode('-', $d);
    $ts=mktime (0,0,0, (int)$ex[1], (int)$ex[2], (int)$ex[0]);
    $ng=date('N',$ts);
    //ritorna data completa nome gg/mm/yyyy
    return $giorno[$ng]." ".implode("/",array_reverse($ex));
}
//*****test********
$data="2017-07-03";//tu userai $riga['data']
echo "da db $data<br>";
echo data_completa($data);//output lunedì 03/07/2017
?>
 
Cosa dire? UN MITO ! ! ! Funziona perfettamente! Grazie infinite!!!

Davanti a tanta grazia ne approfitto ancora, se me lo consenti e ti chiedo un'ultima cosa...

Nella stessa tabella ho anche due campi:" start_time" e "end_time".
Sarebbe possibile far apparire solo start_time quando end_time è uguale?

Esempio:

Start_Time : 15.30
End_Time: 16.30

Vedo: Dalle 15.30 alle 16.30

Ma se:

Start_Time: 15.30
End_Time: 15.30

Vedo solo: 15.30

Grazie mille ancora, davvero!!!
 
ciao
penso che la soluzione migliore sia via scrip, dove leggi i due campi
PHP:
//.....
if($riga['Start_Time']==$riga['End_Time']){
    echo "Start Time End Tme = ".$riga['Start_Time']."<br>";
}else{
    echo "Start = ".$riga['Start_Time']."<br>";
    echo "End Tme = ".$riga['End_Time']."<br>";
}
//...
 
Ehm...avrei ancora un altro quesito...

Sarebbe possibile fare in modo che se nel campo "Subject" il valore è = [Riposo] i campi "Start_Time" e "End_Time" non vengano postati...

Mi sono spiegato?
Grazie ancora per l'aiuto!
 
Non appaiano...
Scusa l'ignoranza...:rolleyes:
Faccio un esempio:

Subject - Start_Date - Start_Time - End_Time - Description - Location
Prova - 01/01/2017 - 10.00 - 12.00 - Verdi - Teatro Regio PR
Assestamento - 02/02/2017 - 10.00 - Verdi - Teatro Regio PR (come mi hai detto tu!grazie ancora!!!)
Concerto - 02/02/2017 - 20.00 - Verdi - Teatro Regio PR
Riposo - 03/03/2017 - - - -

Il problema è che nella tabella nei campi Start_Time e End_Time sono presenti valori (00.00 - 01.00) perchè mi servono per l'invio all'agenda...

In pratica quando appare la parola Riposo nel campo Subject devo stampare solo la data e la descrizione...
 
ciao
non ho capito bene
se $riga['Start_Time']=='00.00' , $riga['End_Time']=='01.00' in $riga['Subject'] deve diventare riposo u start e end vuotarsi
o se $riga['Subject'] =='Riposo' di conseguenza vuotare start e end
 
ciao
ti basta modificare quell'if che ti avevo postato
PHP:
//.....
if($riga['Subject'] =='Riposo' ){
    $riga['Start_Time']='';
    $riga['End_Time']='';
}else{
    if($riga['Start_Time']==$riga['End_Time']){
        echo "Start Time End Tme = ".$riga['Start_Time']."<br>";
    }else{
            echo "Start = ".$riga['Start_Time']."<br>";
        echo "End Tme = ".$riga['End_Time']."<br>";
    }
}
//.....
cioe se Subject è riposo vuota start e end, se no verifica se sono uguali

p.s.
una curiosità: come mai citi il regio e parma?
 

Discussioni simili