Stampare valori di un database

  • Creatore Discussione Creatore Discussione Fra_23
  • Data di inizio Data di inizio

Fra_23

Utente Attivo
4 Mag 2021
41
4
8
Ciao a tutti avevo un dubbio: c'è un modo per "stampare" in una pagina i valori di un database divisi per un valore(nel mio caso un orario)?
 
Cosa intendi con: stampare in una pagina il valori di un DB divisi per un valore? Spiegati meglio.....
 
Si, hai ragione mi spiego meglio:
Ho un form che prende due valori: il nome e un orario(da una select) e li manda ad un database. In un'altra pagina ho scritto tutti gli orari e vorrei che sotto quegli orari venissero stampati tutti i nomi che si sono registrati con quell'orario.
Grazie.
 
Grazie mille! Avevo pensato select from tabella where orario=17.30

Inviato dal mio SM-A125F utilizzando Tapatalk
 
Avevo anche un'altra domanda: é possibile resettare autaticamente ogni 24h il contenuto della tabella? Ho trovato la funzione TRUNCATE ma non saprei applicarla automaticamente ogni 24h
Grazie ancora per tutto!

Inviato dal mio SM-A125F utilizzando Tapatalk
 
select from tabella where orario=17.30
Scrivendo così selezioni solo gli utenti che hanno scelto come orario le 17,30 mentre,. se non ho capito male, tu vorresti una pagina che riportasse tutti gli orari riportati nella select e, accanto, tutti gli utenti che hanno scelto quell'orario, giusto?
Per l'altra cosa non lo so, devo fare delle prove (probabilmente, per questo, dovrai usare altri linguaggi tipo jQuery che permette di compiere azioni ad intervalli di tempo). Ti faccio sapere. Ciao
 
Guarda se mi confermi che where funziona a me basterebbe perché dato che selct non sono troppe posso anche farlo a mano.
Grazie mille per l'interessamento.

Inviato dal mio SM-A125F utilizzando Tapatalk
 
Ciao. Spero di aver interpretato bene quello che intendi fare; prima però ti mando un link dove puoi vedere il funzionamento del programma: questo si apre con un form dove l'utente, dopo aver inserito il proprio nome, può selezionare un orario e, alla pressione del tasto invia, saranno inviati ad un DB. Qui ho messo un link che ti permette di effettuare altri inserimenti: ti conviene inserire 5-6 utenti, alcuni anche con lo stesso orario perché poi, richiamando la pagina di riepilogo, verranno elencatl, per ciascun orario, gli utenti che hanno scelto quell'orario. Ovviamente se non c'è nessun utente non verrà mostrato nemmeno l'orario. All'inizio la pagina di riepilogo ti fa vedere semplicemente la tabella (utente e orario), è solo una prova per vedere che tutto funzioni, poi la puoi anche togliere. Fammi sapere come va. A presto
 
Ciao. In questo momento sono abbastanza occupato, ma più tardi ti invio il codice completo (ho usato un array)

Zorro
 
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
 
Ultima modifica:

Discussioni simili