Saludos
Estoy implementando un sistema de reservas para hoteles y tengo un problema en lo siguiente:
Un usuario que ha realizado una reserva en un determinado rango de fechas evidentemente no podrá realizar otra en el mismo hotel en dicho rango, por eso cuento con una consulta para comprobarlo.
Funciona bien si la fecha de inicio y fin son iguales, la fecha de inicio es igual o bien la fecha de inicio introducida es mayor que la registrada y menor que la de fin, es decir, si yo hago una reserva del 23/04/2019 al 30/04/2019 si meto por ejemplo la fecha de inicio 26/04/2019 y la fecha de fin 29/04/2019 no me deja insertarlo (funcionando bien).
El problema viene por ejemplo cuando en introduzco como fecha de inicio 26/04/2019 y como fecha de final 01/05/2019 que sí que me inserta la reserva, cosa que no debería hacer al estar el día 26 en el intervalo anteriormente mencionado. Dejo la consulta:
$consulta= "SELECT count(id) as recuento from tablareservas where correousuario = ? AND id = ? AND (inicio = ? OR fin= ? OR(inicio<? AND fin>?))";
$reserva = $registro->prepare($consulta);
$reserva->bind_param("sissss", $correousuario, $id,$inicio,$fin,$inicio,$fin);
$reserva->execute();
$reserva->bind_result($recuento);
$reserva->fetch();
$reserva->close();
El id de la reserva se toma de la url, mientras que los datos restantes se introducen previamente en un formulario. He probado a poner una opción donde inicio<? y fin<?, pero si hago eso haga lo que haga no me deja insertar nada.
Gracias de antemano