entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Problema con rangos de fechas en sistema de reservas

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

1 Respuesta

1voto

mchojrin Puntos2630

Tal vez podrías intentar algo como:

SELECT count(id) as recuento from tablareservas where correousuario = ? AND id = ? AND (inicio BETWEEN ? AND ?) OR (fin BETWEEN ? AND ?)

De esta forma deberías limitar los casos en que la fecha de inicio o la de fin pertenecen al rango buscado

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta