Ti mando il codice completo: inizio con il form form.php:
PHP:
<?php
echo '<form action="contrform.php" method="get">';
echo 'inserisci cognome: ';
echo '<input type="text" name="cogn"><br><br>';
echo 'e ora seleziona un orario: ';
echo '<select name="orario">';
echo ' <option value="9.00">9,00</option>';
echo ' <option value="9.15">9,15</option>';
echo ' <option value="9.30">9,30</option>';
echo ' <option value="9.45">9,45</option>';
echo ' <option value="10.00">10,00</option>';
echo ' <option value="10.15">10,15</option>';
echo ' <option value="10.30">10,30</option>';
echo ' <option value="10.45">10,45</option>';
echo '</select><br><br><br><br>';
echo '<input type="submit" name="submit">';
echo '</form>';
?>
il secondo è il codice che recupera le variabili (utente e orario) e le memorizza sul DB:
PHP:
<?php
$cognome=$_GET['cogn'];
$orario=$_GET['orario'];
//echo 'i campi passati sono:<br><br>Cognome: '.$cognome.'<br>Orario scelto: '.$orario;
//registro i valori passati nel file
include('conn.php');
$connessione = new mysqli($host, $user, $password, $db);
// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
echo "Connessione fallita: ". $connessione->connect_error . ".";
exit();
}
// esecuzione della query per l'inserimento dei record
if (!$connessione->query("INSERT INTO FRA (COGNOME, ORARIO) VALUES
('$cognome', '$orario')")) {
echo "Errore della query: " . $connessione->error . ".";
}
// chiusura della connessione
$connessione->close();
echo '<br><br><a href="form.php">nuovo inserimento<a><br><br><a href="riepilogo.php">pagina di riepilogo<a>';
?>
conn.php contiene le variabili di connessione. La tabella del DB (FRA) è costituita di tre campi: ID autoincrementante,
UTENTE varchar e ORARIO decimal (4,2). Questo è importante perché, nella pagina di riepilogo, il DB viene ordinato proprio per ORARIO; ed infine riepilogo.php:
PHP:
<?php
$arriscritti=array();
include('conn.php');
//************stringa di connessione al DB*************
$connessione = new mysqli($host, $user, $password, $db);
// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
echo "Connessione fallita: ". $connessione->connect_error . ".";
exit();
}
$ind=0;
if (!$result = $connessione->query("SELECT * FROM FRA ORDER BY ORARIO asc")) {
echo "Errore della query: " . $connessione->error . ".";
}else{
// conteggio dei record
if($result->num_rows > 0) {
// conteggio dei record restituiti dalla query
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$cognome = $row['COGNOME'];
$orario = $row['ORARIO'];
$arriscritti[$ind]['nome']=$cognome;
$arriscritti[$ind]['orario']=$orario;
// echo "$id $cognome $orario<br>";
$ind++;
}
// liberazione delle risorse occupate dal risultato
$result->close();
}
}
$nele=count($arriscritti);
for ($ind=0;$ind<$nele;$ind++) {
echo $arriscritti[$ind]['orario'].' '.$arriscritti[$ind]['nome'].'<br>';
}
echo '<br><br><br>';
for ($ind=0;$ind<$nele;$ind++) {
$ora=$arriscritti[$ind]['orario'];
if ($ind==0) {
$utenti=$arriscritti[$ind]['nome'];
}
if ($arriscritti[$ind+1]['orario']==$ora) {
$utenti.=','.$arriscritti[$ind+1]['nome'];
}else{
echo 'orario: '.$arriscritti[$ind]['orario'].' - utenti iscritti: '.$utenti.'<br>';
$utenti='';
$utenti.=$arriscritti[$ind+1]['nome'];
}
}
?>
Come vedi, la tabella è ordinata per ORARIO, dopodiché ho inserito i campi in un array ($arriscritti) per avere maggior controllo; dopodiché ho letto uno alla volta gli elementi dell'array, memorizzando utente e oraio e se l'orario dell'elermento successivo è uguale aggiungo l'utente a quello/i già memorizzato/ti, altrimenti stampo l'orario e gli utenti precedenti, memorizzo il nuovo orario e il nuovo utente e così per tutto l'array.
Spero sia tutto chiaro ma, se dovessi avere problemi....., scrivi. ciao
zorro