Come gestire una sala d'attesa in PHP
Due settimane fa, stavo cercando un metodo semplice per controllare una lista d'attesa, proiettando a video l'ora della prenotazione. Volevo mostrare quell'ora su diversi televisori e poterla cambiare con uno o più telecomandi. Mi è venuto in soccorso l'HTML: infatti creando una pagina in PHP e l'altra in HTML ho potuto realizzare il tutto. Di seguito condivido il risultato finale e uno slideshow che alterna delle immagini informative all'ora di prenotazione.
All'inizio pensavo a una connessione diretta tramite HDMI di un computer con una presentazione in Powerpoint o simile. Tuttavia, l'ho trovato noioso e ho provato un altro modo: PHP e AJAX.
Per fortuna che esistono Google e Stackoverflow ed in particulare questa pagina: Execute PHP function with onclick, Mi ha dato lo spunto per realizzare questo:
Messaggio nei televisori: |
Telecomando: |
Sull'utilizzo dei bottoni più o meno penso non ci siano dubbi, mentre quello per aggiornare l'ora, torna utile quando si hanno più telecomandi, perché permette di sincronizzare l'ora tra loro senza scombussolare l'orario negli schermi. Infine per rendere più vario e godibile il tutto ho utilizzato lo script di Troy Wolf, che si può trovare qui: SiteShow -- Create a slideshow of web pages. È molto facile da usare, basta aggiungere una serie di pagine web, definendo titolo, durata e indirizzo URL per ogni diapositiva. È possibile modificare il colore di dissolvenza ed il risultato finale è molto piacevole:
Presentazione:(Fullscreen) |
Ovviamente ognuno può personalizzare le singole pagine con foto, scritte a piacimento e adattandolo ai visitatori che sono in attesa.
Come funziona
Il sistema è composto da tre file:
- controller.php è il telecomando che controlla l'ora presente in index.html e se non esiste il file comincia dalle ore 8:00;
- index.html è il file che viene proiettato e sovrascritto con la nuova ora quando si preme sui bottoni più o meno;
- login.php è una pagina molto banale che richiede la password per poter accedere a controller.php.
Sotto ho messo il codice e qui di seguito le tre parti di codice che permettono il funzionamento del bottone meno:
HTML
<button onclick="removeMin(event)" class="btn"><i class="fa fa-minus-circle"></i></button>
Javascript
async function removeMin(e) { e.preventDefault(); time = document.getElementById("ora").innerHTML; document.getElementById("ora").innerHTML = await(await fetch('?remove='+time)).text(); }
PHP
function removeMin() { $timeIn = $_GET['remove']; $minutes_to_remove = 5; $time = new DateTime($timeIn); $time->sub(new DateInterval('PT' . $minutes_to_remove . 'M')); $stamp = $time->format('H:i'); writeFile($stamp); // call the function echo $stamp;} if (isset($_GET['remove'])) { return removeMin(); }
Download
Dal mio profilo su GitHub si può scaricare o clonare il tutto: rainnic/simple-queue-system-PHP