Os agradezco de antemano si me echais un cable porque llevo días bloqueado y sin avanzar.
Tengo un calendario con una hora de inicio y una hora de final de reserva.
Me interesa que si ya hay una reserva previa no se pueda duplicar.
Por ejemplo si hay una reserva de 10h a 12h no se pueda hacer una reserva ni de 11h a 14h ni de 9h a 11 h., ni de 9 a 13h…etc.
Para ello hago un formulario y recojo la hora inicioPropuesta y la hora finalPropuesta
Consulta a la base de datos recojo los datos de las reservas hechas para esa fecha horaInicio y horaFinal y creo un if ton todos los condicionales:
Si la hora de inicioPropuesta es mayor que la horaInicio y la hora de inicioPropuesta es menor que la horaFinal…. Ya hay una reserva previa- por ejemplo.
Si no se cumplen todos los condicionales pasa a registrar la reserva a la base de datos
Hasta aquí todo es perfecto.
El problema es cuando tengo para el mismo día dos reservas en dos horarios.
Por ejemplo, el 7 de marzo tengo una reserva de:
10h a 14h
y otra
16h a 20h
Entonces si quiero entrar una reserva que no cumple la segunda condición, por ejemplo de 17h a 21h , como si cumple la primera ya salta a registrar a la base de datos.
Es decir que necesito que el condicional compruebe todas las reservas de ese día no solamente la primera. Que la condición sirva para todos los arrays pues puede no cumplir con una o con la otra y quiero que compruebe que no cumple con ninguna de las dos.
Aquí el código:
$iniciProposta = $_POST['horaInici'];
$finalProposta = $_POST['horaFinal'];
$carai = $_POST['data'];
mysql_select_db($database_cnxHotels, $cnxHotels);
$result=mysql_query("select * FROM reservaCataAgencies WHERE codi = '$carai' and tipoReserva = 'reserva'");
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
$horaInici=$row['horarioInicio'];
$horaFinal=$row['horarioFinal'];
if (($iniciProposta > $horaInici and $iniciProposta < $horaFinal) or ($finalProposta > $horaInici and $finalProposta < $horaFinal) or ($iniciProposta < $horaInici and $finalProposta > $horaFinal)) {
echo "ya hay una reserva";
} else {
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO reservaCataAgencies (codi, horarioInicio, horarioFinal, tipoReserva, pax, agencia, lugarEmbarque, lugarDesembarque, reserva) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['data'], "text"),
GetSQLValueString($_POST['horaInici'], "text"),
GetSQLValueString($_POST['horaFinal'], "text"),
GetSQLValueString($_POST['tipoReserva'], "text"),
GetSQLValueString($_POST['pax'], "text"),
GetSQLValueString($_POST['agencia'], "text"),
GetSQLValueString($_POST['embarc'], "text"),
GetSQLValueString($_POST['desembarc'], "text"),
GetSQLValueString($_POST['reserva'], "text"));
mysql_select_db($database_cnxHotels, $cnxHotels);
$Result1 = mysql_query($insertSQL, $cnxHotels) or die(mysql_error());
$insertGoTo = "index.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}