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:
fin qui non ho incontrato nessun problema.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"; }
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:
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 status!='pending'"; $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.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"; }
Come posso fare per integrare le due condizioni nella query?

Rispondi quotando