[PHP] Verificare che azienda sia aperta o chiusa

MarDom96

Nuovo Utente
27 Giu 2016
8
0
1
24
Ciao a tutti. Sto modificando la homepage del sito della mia attività e stavo integrando la funzione per vedere se, all'ora in cui si è adesso, questa sia aperta o chiusa.
Ho creato una tabella con gli orari e nella terza colonna ci deve venir scritto "Aperto" o "Chiuso" dinamicamente nonostante l'ora.
Ho fatto una ricerca su internet e ho trovato un pezzo di codice e l'ho modificato in parte:

PHP:
<?php

$storeSchedule = [
    'Mon' => ['08:15 AM' => '12:15 AM', '03:00 PM' => '07:00 PM'],
    'Tue' => ['08:15 AM' => '12:15 AM', '03:00 PM' => '07:00 PM'],
    'Wed' => ['08:15 AM' => '12:15 AM', '03:00 PM' => '07:00 PM'],
    'Thu' => ['08:15 AM' => '12:15 AM'],
    'Fri' => ['08:15 AM' => '12:15 AM', '03:00 PM' => '07:00 PM'],
    'Sat' => ['08:15 AM' => '12:15 AM', '03:00 PM' => '07:00 PM']
];

$timestamp = time();

$status = 'Chiuso';

$currentTime = (new DateTime())->setTimestamp($timestamp);

foreach ($storeSchedule[date('D', $timestamp)] as $startTime => $endTime) {

    $startTime = DateTime::createFromFormat('h:i A', $startTime);
    $endTime   = DateTime::createFromFormat('h:i A', $endTime);

    if (($startTime < $currentTime) && ($currentTime < $endTime)) {
        $status = 'Aperto';
        break;
    }
   
}

$jd=gregoriantojd(date("m"),date("d"),date("Y"));

    if (jddayofweek($jd,1) == 'Monday' || jddayofweek($jd,1) == 'Tuesday'  || jddayofweek($jd,1) == 'Wednesday') {
     
      if ($status == "Aperto") {
          echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td><b><font color='green'>Aperto<br><font color='white'>.</font></font></b></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";  }
      else {
          echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td><b><font color='red'>Chiuso<br><font color='white'>.</font></font></b></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>"; }
          }
     
    if (jddayofweek($jd,1) == 'Thursday') {
     
      if ($status == "Aperto") {
          echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td><b><font color='green'>Aperto</font></b></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
     echo "<td></td></tr>";  }
      else {
          echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td><b><font color='red'>Chiuso</font></b></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";}
      }

    if (jddayofweek($jd,1) == 'Friday' || jddayofweek($jd,1) == 'Saturday') {
     
      if ($status == "Aperto") {
          echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td><b><font color='green'>Aperto<br><font color='white'>.</font></font></b></td></tr>"; }
      else {
          echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
         echo "<td><b><font color='red'>Chiuso<br><font color='white'>.</font></font></b></td></tr>";}
      }
     
      if (jddayofweek($jd,1) == 'Sunday') {
      echo "<th><p style='margin-top:0%;'>Lun-Mer:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Gio:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15</p></td>";
          echo "<td></td></tr>";
         
          echo "<th><p style='margin-top:0%;'>Ven-Sab:</p></th>";
          echo "<td><p style=' margin-left:10px;'>08:15 - 12:15<br>15:00 - 19:00</p></td>";
          echo "<td></td></tr>";
     
      }
?>

Quando ho integrato questo codice il primo giorno funzionava tutto alla grande poi dal secondo giorno in poi la scritta rimane su "Chiuso" per tutto il tempo, 24h su 24, nonostante l'orario in cui è aperta. Non capisco cosa ci sia di sbagliato
Chiedo un vostro aiuto per metterlo a posto. Grazie mille.
 

LuigiDonato

Utente Attivo
20 Ago 2015
63
0
6
Mi sa che abbiamo fatto due siti identici.. :D
Allora, ti posto il codice che usai io, ma ti avviso, era la mia prima esperienza con il PHP.. Mentre farò copia incolla infatti cercherò di tenere gli occhi chiusi per più tempo possibile..:D
PHP:
            if($hours->num_rows == 1){
                $orari = $hours->fetch_assoc(); $giorni = $orari['giorni']; $ap1 = $orari['ap1']; $ch1 = $orari['ch1']; $ap2 = $orari['ap2']; $ch2 = $orari['ch2']; $ap3 = $orari['ap3']; $ch3 = $orari['ch3'];
                if($giorno == 0){
                    if(strstr($giorni, ':domm:')){if($ap3 < $ch3){if($ora > $ap3 && $ora < $ch3){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap3 > $ch3){if($ora > $ap3 || $ora < $ch3){$semaforo = $verde;}else{$semaforo = $rosso;}}}
                    elseif(strstr($giorni, ':dom:')){if($ap1<$ch1 && $ap2<$ch2){if(($ora > $ap1 && $ora < $ch1) || ($ora > $ap2 && $ora < $ch2)){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap1>$ch1){if(($ora>$ap1 || $ora<$ch1) || ($ora > $ap2 && $ora < $ch2)){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap2>$ch2){if(($ora>$ap2 || $ora<$ch2) || ($ora > $ap1 && $ora < $ch1)){$semaforo = $verde;}else{$semaforo = $rosso;}}}
                }
                if($giorno == 1){
                    if(strstr($giorni, ':lunm:')){if($ap3 < $ch3){if($ora > $ap3 && $ora < $ch3){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap3 > $ch3){if($ora > $ap3 || $ora < $ch3){$semaforo = $verde;}else{$semaforo = $rosso;}}}
                    elseif(strstr($giorni, ':lun:')){if($ap1<$ch1 && $ap2<$ch2){if(($ora > $ap1 && $ora < $ch1) || ($ora > $ap2 && $ora < $ch2)){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap1>$ch1){if(($ora>$ap1 || $ora<$ch1) || ($ora > $ap2 && $ora < $ch2)){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap2>$ch2){if(($ora>$ap2 || $ora<$ch2) || ($ora > $ap1 && $ora < $ch1)){$semaforo = $verde;}else{$semaforo = $rosso;}}}
                }
                if($giorno == 2){
                    if(strstr($giorni, ':marm:')){if($ap3 < $ch3){if($ora > $ap3 && $ora < $ch3){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap3 > $ch3){if($ora > $ap3 || $ora < $ch3){$semaforo = $verde;}else{$semaforo = $rosso;}}}
                    elseif(strstr($giorni, ':mar:')){if($ap1<$ch1 && $ap2<$ch2){if(($ora > $ap1 && $ora < $ch1) || ($ora > $ap2 && $ora < $ch2)){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap1>$ch1){if(($ora>$ap1 || $ora<$ch1) || ($ora > $ap2 && $ora < $ch2)){$semaforo = $verde;}else{$semaforo = $rosso;}}elseif($ap2>$ch2){if(($ora>$ap2 || $ora<$ch2) || ($ora > $ap1 && $ora < $ch1)){$semaforo = $verde;}else{$semaforo = $rosso;}}}
                }
etc. etc. etc.
Mammamia che orrore..:confused:
In pratica io avevo impostato che mi salvava il giorno nel formato :lun: :mar: etc. e poi le mezze giornate invece con :lunm: :marm: etc..
 

MarDom96

Nuovo Utente
27 Giu 2016
8
0
1
24
Mi potresti spiegare brevemente il tuo codice? Cavoli è pienissimo e fittissimo di if elseif ecc
Non ci sto piu capendo niente
 

LuigiDonato

Utente Attivo
20 Ago 2015
63
0
6
Allora, in pratica se viene selezionata la mezza giornata (es: :lunm:) vengono salvati solo orario di apertura (ap3) e di chiusura (ch3), mentre se si tratta di un doppio turno tipo dalle 8 alle 13 e dalle 15 alle 18, viene salvato il giorno (es: :lun:) e poi la prima apertura (ap1) e chiusura (ch1) e la seconda apertura (ap2) e chiusura (ch2)..
Il mio comunque voleva essere solo uno spunto, come dicevo è stato il mio primo progetto, quindi migliorabile di parecchio..
Ad esempio si potrebbero creare due array con i giorni e le mezze giornate e creare un unico ciclo invece di crearne 14.. ;)
 
Discussioni simili
Autore Titolo Forum Risposte Data
W verificare credenziali in automatico con PHP PHP 1
C [PHP] verificare se un dispositivo e' online PHP 9
filippino Verificare se variabile di PHP è definita PHP 2
IImanuII Verificare se Javascript è attivo attraverso PHP PHP 8
D Verificare esistenza indirizzo e-mail in php PHP 2
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 0
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14

Discussioni simili