Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Controllo su data

  1. #1

    Controllo su data

    Ciao ragazzi, mi servirebbe un aiutino: avrei bisogno di un codice semplice che in base al giorno della settimana e in base ad un orario compreso tra un valore minimo e massimo mi stampi un messaggio X se l'orario è contenuto in una fascia oraria da me impostata, Y se è in un'altra fascia oraria o Z se non è nelle fasce orarie da me impostate.

    Per farla breve ho bisogno che una funzione mi sappia dire che oggi è ad esempio "Giovedi" ed essendo le "8:45" ( quindi orario contenuto nella prima fascia oraria X = 8:00 - 10:00 ) io mi trovi nel "negozio A", che se invece fossero le "10:45" ( seconda fascia oraria Y = 10:30 - 13:00 ) sarei nel "negozio B", o in alternativa che il negozio è chiuso xkè l'orario è fuori dalle fasce orarie da me impostate.

    ps. Ogni giorno della settimana ha 2 fasce orarie ben definite!


    Grazie a tutti coloro vorranno aiutarmi

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ti basta usare la funzione date() per sapere giorno e ora e poi usare questi dati in una struttura if/else.
    Non serve nient'altro.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Ti basta usare la funzione date() per sapere giorno e ora e poi usare questi dati in una struttura if/else.
    Non serve nient'altro.
    Grazie per il suggerimento, ho optato di operare in questo modo :

    Codice PHP:
    <?phpdate_default_timezone_set('Europe/Rome');

    $giorno date("D");

    $ora_attuale date("H");
    $minuti_attuali date('i');

    $min_tot= ($ora_attuale*60)+$minuti_attuali//Trasformo le ore in minuti per poter sommare i minuti dell'ora corrente

    $arb "La Dottoressa riceve nello studio A";
    $mar "La Dottoressa riceve nello studio M";
    $closed "Lo studio è chiuso";

    $lun_a_i 14*60//Orario di Lunedi "dalle 14 alle.... " moltiplicato per 60 minuti nello studio A
    $lun_a_f 17*60// Orario di chiusura di Lunedi dello studio A

    $lun_m_i = (17*60)+30//Orario di inizio dello studio B
    $lun_m_f 20*60//Chiusura studio B

    $mar_a_i 8*60// e così via
    $mar_a_f 10*60;

    $mar_m_i = (10*60)+30;
    $mar_m_f 13*60;

    $mer_a_i = (10*60)+30;
    $mer_a_f 13*60;

    $mer_m_i 16*60;
    $mer_m_f 19*60;

    $ven_a_i 8*60;
    $ven_a_f 10*60;

    $ven_m_i = (10*60)+30;
    $ven_m_f 13*60;


    switch (
    $giorno) {
        case 
    "Sun":
            echo 
    $closed;
            break;

        case 
    "Mon":   //lunedì

            
    if ($min_tot >= $lun_a_i and $min_tot <= $lun_a_f){
                echo 
    $arb;
            }
            elseif (
    $min_tot >= $lun_m_i and $min_tot <= $lun_m_f){
                echo 
    $mar;
            }
            break;

        case 
    "Tue":

            if (
    $min_tot >= $mar_a_i and $min_tot <= $mar_a_f){
                echo 
    $arb;
            }
            elseif (
    $min_tot >= $mar_m_i and $min_tot <= $mar_m_f){
                echo 
    $mar;
            }
            break;

        case 
    "Wed":
            if (
    $min_tot >= $mer_a_i and $min_tot <= $mer_a_f){
                echo 
    $arb;
            }
            elseif (
    $min_tot >= $mer_m_i and $min_tot <= $mer_m_f){
                echo 
    $mar;
            }
            break;

        case 
    "Thu":
            echo 
    $closed;
            break;

        case 
    "Fri":
            if (
    $min_tot >= $ven_a_i and $min_tot <= $ven_a_f){
                echo 
    $arb;
            }
            elseif (
    $min_tot >= $ven_m_i and $min_tot <= $ven_m_f){
                echo 
    $mar;
            }
            break;

        case 
    "Sat":
            echo 
    $closed;
            break;

    }
    ?>
    lo script mi restituisce a video il messaggio $a o $b se le condizioni sono soddisfatte, ma nel caso volessi che mi restituisse $closed quando gli studi sono chiusi, cosa posso fare? Devo applicare un else alla fine di ogni ciclo if?

    Codice PHP:
    case "Mon":   //lunedì
            
    if ($min_tot >= $lun_a_i and $min_tot <= $lun_a_f){
                echo 
    $arb;
            }
            elseif (
    $min_tot >= $lun_m_i and $min_tot <= $lun_m_f){
                echo 
    $mar;
            } else echo 
    $closed;
    break; 
    c'è un modo secondo te di snellire questo script?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    L'impostazione del controllo sembra corretto if/else if/else, in modo che l'else finale prenda tutti i casi che non ricadono nell'if e nell'elseif, quindi la chiusura.
    Per quanto riguarda lo snellimento del codice non è detto che si possa fare, i casi li devi scrivere tutti, al limite puoi raggruppare orari uguali se ci sono.

  5. #5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    L'impostazione del controllo sembra corretto if/else if/else, in modo che l'else finale prenda tutti i casi che non ricadono nell'if e nell'elseif, quindi la chiusura.
    Per quanto riguarda lo snellimento del codice non è detto che si possa fare, i casi li devi scrivere tutti, al limite puoi raggruppare orari uguali se ci sono.
    Grazie, gentilissimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.