Codice PHP:
error_reporting(E_ALL);
security_session();
$db = new connessione();
$db = $db->apriConnessione();
$dataPrenotazioneInizio = '02/06/2015';
$dataPrenotazioneFine = '15/07/2015';
//NOTA BENE DEVI CONTROLLARE ANCHE CHE LA DATA INIZIO PRENOTAZIONE SIA INFERIORE ALLA DATA FINE PRENOTAZIONE
//IN QUESTO PUNTO...IO NON LO FACCIO ADESSO MA TU DEVI FARLO.
$dataInseritaInizio = date_parse_from_format('d/m/Y',$dataPrenotazioneInizio);
$dataInseritaFine = date_parse_from_format('d/m/Y',$dataPrenotazioneFine);
$dataInseritaInizioGiorno = str_pad($dataInseritaInizio['day'], 2 , '0', STR_PAD_LEFT);
$dataInseritaInizioMese = str_pad($dataInseritaInizio['month'], 2 , '0', STR_PAD_LEFT);
$dataInseritaInizioAnno = str_pad($dataInseritaInizio['year'], 4 , '0', STR_PAD_LEFT);
$dataInseritaFineGiorno = str_pad($dataInseritaFine['day'], 2 , '0', STR_PAD_LEFT);
$dataInseritaFineMese = str_pad($dataInseritaFine['month'], 2 , '0', STR_PAD_LEFT);
$dataInseritaFineAnno = str_pad($dataInseritaFine['year'], 4 , '0', STR_PAD_LEFT);
$sql= $db->prepare('SELECT data_inizio,data_fine from TUATABELLAAPPARTAMENTI where IDAPPARTAMENTO = 1');
$risultati = $sql->execute();
$sql-> bind_result($data_inizio,$data_fine);
$array=array();
$ko1='';
$ko2='';
$ko3='';
$ko4='';
$ko5='';
$ko6='';
$ko7='';
while ($sql -> fetch()){
print '<br>' .$data_inizio .' ' .$data_fine ;
$data_inizio = date_parse_from_format('d/m/Y',$data_inizio);
$data_fine = date_parse_from_format('d/m/Y',$data_fine);
$dataPrenotataInizioGiorno = str_pad($data_inizio['day'], 2 , '0', STR_PAD_LEFT);
$dataPrenotataInizioMese = str_pad($data_inizio['month'], 2 , '0', STR_PAD_LEFT);
$dataPrenotataInizioAnno = str_pad($data_inizio['year'], 4 , '0', STR_PAD_LEFT);
$dataPrenotataFineGiorno = str_pad($data_fine['day'], 2 , '0', STR_PAD_LEFT);
$dataPrenotataFineMese = str_pad($data_fine['month'], 2 , '0', STR_PAD_LEFT);
$dataPrenotataFineAnno = str_pad($data_fine['year'], 4 , '0', STR_PAD_LEFT);
//Controllo le prenotazioni fatte all'interno di un mese specifico quindi mese inserito inizio prenotazione e mese inserito fine prenotazione
//coincidono
if ($dataPrenotataInizioMese == $dataInseritaInizioMese
&& $dataInseritaInizioMese == $dataInseritaFineMese
&& $dataInseritaInizioAnno == $dataPrenotataInizioAnno){
if ($dataInseritaInizioGiorno > $dataPrenotataInizioGiorno && $dataInseritaFineGiorno < $dataPrenotataFineGiorno){
$ko1='ko1';
$array[]=array_push($array,$ko1);
}
elseif ($dataInseritaInizioGiorno < $dataPrenotataInizioGiorno && $dataInseritaFineGiorno > $dataPrenotataInizioGiorno){
$ko2='ko2';
$array[]=array_push($array,$ko2);
}
elseif ($dataInseritaInizioGiorno < $dataPrenotataFineGiorno && $dataInseritaFineGiorno > $dataPrenotataFineGiorno ){
$ko3='ko3';
$array[]=array_push($array,$ko3);
}
}
//Controllo la disponibilità se una persona prenota a cavallo del mese successivo esempio dal 20/06/2015 al 10/07/2015
//quindi mese inizio prenotazione e mese fine prenotazione non coincidono e l'appartamento è occupato esempio dal 25/06/2015 al 04/07/2015
if($dataPrenotataInizioMese == $dataInseritaInizioMese
&& $dataPrenotataFineMese == $dataInseritaFineMese
&& $dataInseritaInizioMese != $dataInseritaFineMese
&& $dataInseritaInizioAnno == $dataPrenotataInizioAnno){
if ($dataInseritaInizioGiorno > $dataPrenotataInizioGiorno
&& $dataPrenotataInizioMese == $dataInseritaInizioMese
&& $dataInseritaFineGiorno < $dataPrenotataFineGiorno
&& $dataPrenotataFineMese == $dataInseritaFineMese){
$ko4='ko4';
$array[]=array_push($array,$ko4);
}
elseif ($dataInseritaInizioGiorno < $dataPrenotataInizioGiorno
&& $dataPrenotataInizioMese == $dataInseritaInizioMese
&& $dataInseritaFineGiorno < $dataPrenotataFineGiorno
&& $dataPrenotataFineMese == $dataInseritaFineMese){
$ko5='ko5';
$array[]=array_push($array,$ko5);
}
elseif ($dataInseritaInizioGiorno > $dataPrenotataInizioGiorno
&& $dataPrenotataInizioMese == $dataInseritaInizioMese
&& $dataInseritaFineGiorno > $dataPrenotataFineGiorno
&& $dataPrenotataFineMese == $dataInseritaFineMese){
$ko6='ko6';
$array[]=array_push($array,$ko6);
}
elseif ($dataInseritaInizioGiorno < $dataPrenotataInizioGiorno
&& $dataPrenotataInizioMese == $dataInseritaInizioMese
&& $dataInseritaFineGiorno > $dataPrenotataFineGiorno
&& $dataPrenotataFineMese == $dataInseritaFineMese){
$ko7='ko7';
$array[]=array_push($array,$ko7);
}
}
}
if (in_array($ko1, $array) || in_array($ko2,$array)|| in_array($ko3,$array) ||
in_array($ko4, $array) || in_array($ko5,$array)|| in_array($ko6,$array) || in_array($ko7, $array)){
print '<br>'.'Camera non disponibe';
}
else{
print "<br>Giorni liberi procedi la prenotazione clicca qui crea bottone e insert in tabella di nuova prenotazione<br>";
}
//print_r($array);
ps:Non controlla se inserisci una prenotazione da Maggio perchè in tabella le prenotazioni iniziano a Giugno e fa i controlli comparando i mesi di inizio e fine prenotazione mese inizio Maggio in tabella non c'è quindi non entra nei controlli per controllare anche se il mese inserito non c'è in tabella dovrai crearti il caso specifico ed il relativo controllo però devi anche tener conto dei giorni potresti fare così inserisci ko8