[PHP] Difficoltà con la IF su orari disponibili e occupati

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
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
 
Ciao, ti consiglio di convertire gli orari in timstamp e di prendere questa query come base:
$sql = "SELECT * FROM orari WHERE NOT (ora_fine < '$post_ora_inizio' OR '$post_ora_fine' < ora_inizio)";

ora_fine e ora_inizio sono i campi del database, mentre $post_ora_inizio e $post_ora_fine sono i campi che prelevi dal form
 
ma nel database le salvi formato testo come hai indicato
09:00 - 11:00
13:00 - 14:00
18:00 - 19:00
21:00 - 23:00
o time??
 
Ciao, ho messo in TIME su mysql e inoltre, non va bene..

Vedi allegato
screen.png


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
 
Se vuole, le invio il codice...


$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";

}
 

Discussioni simili