php e mysql - visualizzare righe in colonna

  • Creatore Discussione Creatore Discussione thaco
  • Data di inizio Data di inizio

thaco

Nuovo Utente
17 Set 2015
4
0
0
Ciao a tutti,
ho creato questa query:

SELECT Giorno_set, Livello, Orario
FROM Pette, gruppi_pette, giorni
WHERE Pette.Gruppo_Piano= gruppi_pette.gruppo
AND gruppi_pette.giorno_set = giorni.Giorno
AND Pette.Vie = '$a'
AND Pette.Civici_Utenze = '$b'
ORDER BY giorni.posizione, livello

con $a e $b passati da form.

questo è il codice php per la visualizzazione:

for ($x = 0; $x < $numrows; $x++){

// recupero il contenuto di ogni record rovato
$resrow = mysql_fetch_row($risultato);
$Giorno = $resrow[0];
$Livello = $resrow[1];
$Orario = $resrow[2];
echo '
<tr>
<td>' . $Giorno . '</td>
<td>' . $Livello . '</td>
<td>' . $Orario . '</td>
</tr>
';


Il risultato che ottengo è questo:

Giorno Livello Orario
LUNEDI 2 12.00 – 13.30
LUNEDI 4 16.30 – 18.00
MARTEDI 2 16.30 – 18.00
MARTEDI 4 12.00 – 13.30
MERCOLEDI 1 12.00 – 13.30


mentre il risultato desiderato è

Giorno Settimana Livello 1 Livello 2 Livello 3 Livello 4
LUNEDI 12.00 - 13.30 16.30 - 18.00
MARTEDI 16.30 - 18.00 12.00 - 13.30
MERCOLEDI 12.00 - 13.30

Qualcuno sa aiutarmi?
Grazie
 
ciao
intanto da quello che ho capito i risultati sono più di uno quindi non ti basta solo $resrow = mysql_fetch_row($risultato);
prova così
PHP:
<?php
//......
echo "<table>";
echo "<tr><td>GIORNO</td><td>LIVELLO</td><td>ORARIO</td></tr>";
while($resrow = mysql_fetch_row($risultato){
	$Giorno = $resrow[0];
	$Livello = $resrow[1];
	$Orario = $resrow[2];
	echo "<tr><td>$Giorno</td><td>$Livello</td><td>$Orario</td></tr>";
}
echo "</table>";
//.....
?>
 
ciao
mi è venuto in mente di fare così, prova
PHP:
<?php
//.........
while($resrow = mysql_fetch_row($risultato){
	$Giorno = $resrow[0];
	/*
	creo un array di array che sarà circa così
	$da_stamp['LUNEDI']=array('12.00','13.30','16.30','18.00')
	$da_stamp['MARTEDI']=array('16.30','18.00','12.00','13.30')
	$da_stamp['MERCOLEDI']=array('12.00','13.30')
	*/
	$da_stamp[$Giorno][]=$resrow[2];
}
echo "<table>";
echo "<tr><td>giorno</td><td>Livello 1</td><td>Livello 2</td><td>Livello 3</td><td>Livello 4</td></tr>";
//ciclo gli array
foreach($da_stamp as $gg => $valore){//$gg sarò o lonedi o martedi...mentre $valore è un arryay con le ore relative al giorno
	$uno="<tr><td>$gg</td>";
	for($k=0; $k<4;$k++){//da quello che ho capito i livelli sono 4
		//metto l'if/else per mantenere giusta la tabell
		if(isset($valore[$k])){
			//l'orario esiste
			$orario=$valore[$k];
			//concateno
			$uno .= "<td>$orario</td>";
		}else{
			//creo una cella vuota
			$uno .= "<td>&nbsp;</td>";
		}
	}
	//concateno la chiusura
	$uno .= "</tr>";
	//e stampo la riga
	echo $uno;
}
// chiudo la tabella
echo "</table>";
//..............
?>
guarda che ho considerato che i livelli siano 4 e sempre al massimo 4, se i livelli sono variabili il problema si complica, salvo che tu sappia quanti siano al massimo
per cui basta modificare nell ciclo for $k<4 con $k< numero massimo
comunque se non ho sbagliato dovrebbe darti quello che vuoi fare
 

Discussioni simili