Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Difficoltà con la IF su orari disponibili e occupati

    BUongiorno,
    ho una piccola difficoltà nel specificare gli orari DISPONIBILI e OCCUPATI

    Sul database mysql, ci sono 4 record ossia:
    09:00 - 11:00
    13:00 - 14:00
    18:00 - 19:00
    21:00 - 23:00

    Quando digito l'ora, esempio:
    10:00 ed è occupato perchè c'è già quello di 09:00 - 11:00, mentre 11:00 è disponibile perchè è libero dalle 11:00 alle 13:00 per cui,
    come bisogna specificare la IF o altri codici (between, maggiore, minore) in modo che apparisse gli orari liberi e si possono inserire, cioè sul record sono 4 e gli orari liberi sono:
    11:00 - 13:00
    14:00 - 18:00
    19:00 - 21:00

    Inoltre, quando inserisco l'ora 11:00 fino alle 13:15 si deve bloccare perchè è libero alle 13:00 e non 13:15

    Spero che ho scritto bene...
    Grazie

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Potresti provare questa condizione nella query sul db, se ottieni un risultato allora è occupato:
    codice:
    dato:
    $orario_i; // l'orario cercato di inizio es: 11:00
    $orario_f; // l'orario cercato di fine es : 13:15
    inizio;      // campo orario inizio sul db
    fine;        // campo orario fine sul db
    SELECT ... WHERE 
    $orario_i BETWEEN inizio AND fine
    OR
    $orario_f BETWEEN inizio AND fine
    OR
    ($orario_i < inizio AND $orario_f > fine)
    Tieni presente che BETWEEN include anche gli estremi (è come fare: fine >= $orario_x <= inizio).
    In caso non ti vada bene basta che sostituisci con, esempio
    ($orario_i > inizio AND $orario_i < fine)

    Ovviamente, tutto dipende da come hai salvato sul db il range di orario. Se hai due varchar forse dovrai far un cast sul tipo time.Se si trova tutto su un varchar allora la cosa è più complicata.
    Ultima modifica di boots; 28-06-2017 a 12:30

  3. #3
    Ciao, ho messo in TIME su mysql e inoltre, non va bene..


    Vedi allegato


    Perchè su LUNEDI' dalle 11:00 alle 11:50 è occupato ma dalle 11:30 alle 12:20 è libero, dovrebbe essere occupato perchè le 11:30 è prima le 11:50 perciò non risulta finito, lo stesso anche su 15:00 - 15:50 e 15:30 - 16:20

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    puoi postare il tuo codice?

  5. #5
    $orologio = explode(":", date("H:i", strtotime($resultDurata['tempo']))); //minuti occupati esempio, 50 minuti diventa 00:50:00


    $dalle_ore_find = date("H:i:s", strtotime($resultOrariMassaggi['ora_giornalieri'])); // scelgo ora 11 e diventa 11:00:00

    $alle_ore_find = date("H:i:s", strtotime('+'. $orologio[0] .' hour +'. $orologio[1] .' minutes', strtotime($resultOrariMassaggi['ora_giornalieri']))); /calcolo 11:00:00 + 00:50:00 minuti = 11:50:00

    $orario_i = $dalle_ore_find; // l'orario cercato di inizio es: 11:00:00

    $orario_f = $alle_ore_find; // l'orario cercato di fine es 11:50:00



    $queryControlloMassaggi = "SELECT * FROM ". $database_gestionale .".utenti_massaggi WHERE ('". $orario_i ."' BETWEEN dalle_ore AND alle_ore) OR ('". $orario_f ."' BETWEEN dalle_ore AND alle_ore) OR ('". $orario_i ."' > dalle_ore AND '". $orario_i ."' < alle_ore)";

    $selectControlloMassaggi = mysql_query($queryControlloMassaggi, $connessione);

    $numControlloMassaggi = mysql_num_rows($selectControlloMassaggi);

    if($numControlloMassaggi == 0)
    {

    echo"Disponibile";

    } else {

    echo"OCCUPATO";

    }

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Guarda, ho provato questa query su phpmyadmin è funziona (mettendo un record 11:00 - 11:50):

    SELECT ... WHERE ('11:30:00' BETWEEN dalle AND alle) OR ('12:20:00' BETWEEN dalle AND alle) OR ('11:30:00' < dalle AND '12:20:00' > alle)

    Sei sicuro che i valori $orario_i/f siano corretti ?

    PS: l'ultima condizione l'hai sbagliata : ('". $orario_i ."' < dalle_ore AND '". $orario_f ."' > alle_ore)";

  7. #7
    Ciao, si sono corretti e non ho sbagliato...
    Perchè sulla query, se devo mettere un codice PHP su MYSQL ossia
    SELECT * FROM ore WHERE ora='". $codice ."'
    Altrimenti senza le doppie virgolette e il punto, non funziona e legge male..

    Prova a mettere 4 record
    09:00 - 11:00
    13:00 - 14:00
    18:00 - 19:00
    21:00 - 23:00

    E fai una prova nel scegliere l'orario ad esempio 11:00 alle 15:00 e vedi se è libero o bloccato..
    A me da un risultato LIBERO e invece dovrebbe essere OCCUPATO.

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ho fatto come hai detto e la query fa il suo dovere: ti ritrova il record 09-11 e 13-14. Quindi secondo me sbagli qualcosa quando la crei

    Schermata del 2017-06-28 17:55:41.jpg

  9. #9
    Ciao, perdonami ho fatto la stessa cosa...
    Ci sono 2 cose che non funzionano sia sulla QUERY di PHPMYADMIN che sul codice PHP e ti indico:
    Sul database ci sono questi orari
    Schermata 2017-06-28 alle 21.14.05.png

    Ci sono 2 orari che controllano in modo scorretti sono:
    - Scelgo orario dalle 08:00 alle 08:22 - risulta OCCUPATO ed è sbagliato perchè è libero dale 08:00 fino alle 08:30
    - Scelgo orario dalle 21:00 alle 22:20 - risulta LIBERO ed è sbagliato perchè è occupato dalle 21:30 alle 21:50

    Perdonami, non voglio romperti le scatole....
    Ultima modifica di z.cristiano; 28-06-2017 a 21:29

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Facciamo una cosa:
    Scegli l'orario che da risultati sbagliati; invece di eseguire la query stampala e postala qui così la provo su phpmyadmin.

    PS: Gli orari già inseriti son quelli che hai postato sopra, giusto? perchè a me pare che che sia occupato dalle 07:00 alle 08:20 e non può essere libero dalle 08:00 alle 08:30

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.