Come gestire una sala d'attesa in PHP

Pubblicato da Nicola Rainiero il 16-05-2021 (aggiornato il 17-05-2021)

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.

Come gestire una sala d'attesa in PHP

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:

  1. controller.php è il telecomando che controlla l'ora presente in index.html e se non esiste il file comincia dalle ore 8:00;
  2. index.html è il file che viene proiettato e sovrascritto con la nuova ora quando si preme sui bottoni più o meno;
  3. 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



Potrebbero interessarti anche:

Nicola Rainiero

Ingegnere civile specializzato in geotecnica con l'ambizione di facilitare la propria attività lavorativa usando e creando software libero per un sapere condiviso e collettivo. Mi occupo anche di energie rinnovabili ed in particolare di geotermia a bassa entalpia. Sono da sempre appassionato di web design e modellazione 3D.