Buongiorno a tutti
Sto programmando in php uno script che gestisce la prenotazione di case vacanze con database mysql.
Tramite un form vengono inserite la data di ingresso ($dayin) e di uscita ($dayout) e tramite queste viene fatto un controllo sul database per vedere se la casa selezionata ($app_id) è libera in quel periodo.
Ho pensato quindi una query select di questo genere:
codice:
$query = "SELECT * FROM prenotazioni WHERE (($dayin BETWEEN data_in AND data_out) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin < data_in) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin BETWEEN data_in AND data_out) AND ($dayout > data_out) OR ($dayin < data_in) AND ($dayout > data_out)) AND id_app=$_POST[app_id]";
$result = mysql_query($query, $db);
$num_results = mysql_num_rows($result);
if ($num_results == "")
{
echo "appartamento libero";
}
else
{
echo "appartamento occupato";
}
fin qui non ho incontrato nessun problema.
Sul sistema che ho pensato, chi vuole bloccare la prenotazione dovrà pagare una caparra entro 24 ore dall'inserimento delle date, quindi ho creato le colonne ora_prenotazione e status sul db.
A pagamento avvenuto lo status passerà da pending a confirmed ed il periodo sarà bloccato.
Anche nelle 24 ore di tempo a disposizione per il pagamento della caparra il periodo verrà bloccato. Scaduto tale termine, l'appartamento tornerà libero nel periodo selezionato.
La query:
codice:
$tiempoin = mktime() - 86400;
$query = "SELECT * FROM prenotazioni WHERE (($dayin BETWEEN data_in AND data_out) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin < data_in) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin BETWEEN data_in AND data_out) AND ($dayout > data_out) OR ($dayin < data_in) AND ($dayout > data_out)) AND id_app=$_POST[app_id] AND status!='pending'";
$result = mysql_query($query, $db);
$num_results = mysql_num_rows($result);
if ($num_results == "")
{
echo "appartamento libero";
}
else
{
echo "appartamento occupato";
}
e quest'altra query:
codice:
$tiempoin = mktime() - 86400;
$query = "SELECT * FROM prenotazioni WHERE (($dayin BETWEEN data_in AND data_out) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin < data_in) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin BETWEEN data_in AND data_out) AND ($dayout > data_out) OR ($dayin < data_in) AND ($dayout > data_out)) AND id_app=$_POST[app_id] AND ora_prenotazione>'$tiempoin'";
$result = mysql_query($query, $db);
$num_results = mysql_num_rows($result);
if ($num_results == "")
{
echo "appartamento libero";
}
else
{
echo "appartamento occupato";
}
danno i risultati previsti, ma come inserisco due AND nella query principale, la query mi risponde con gli appartamenti tutti liberi.
Come posso fare per integrare le due condizioni nella query?