Ocupación de alojamientos turísticosa

Hola a todos!
Estoy desarrollando un portal turístico desde donde poder reservar el alojamiento online, necesito me indiquen un poco sobre la parte de ocupación de los alojamientos.
Cuando el cliente introduzca la fecha de llegada y salida se hará una consulta en las reservas para verificar si están libres esas fechas y los días en medio, pero estoy hecho un medio cacao con las fechas, funciona igual que los campos numéricos.
Ejemplo de consulta:
El cliente quiere comprobar las fechas siguientes $llegada=2009-11-10 $salida=2009-11-20
Consulta para comprobar fecha llegada
$llegadasql=mysql_query("SELEC * FROM reservas WHERE REFALOJAMIENTO=$RefAlojamiento && LLEGADA=$llegada && SALIDA<=$llegada;");
Consulta para comprobar fecha salida
$salidasql=mysql_query("SELEC * FROM reservas  WHERE REFALOJAMIENTO=$RefAlojamiento && LLEGADA=$salida && SALIDA<=$salida;");
Si hay resultado es que está ocupado, ¿No?, o ¿Estoy haciendo un disparate?
Si alguien puede ayudarme, pasarme un tutorial o lo que sea.
Gracias!

1 respuesta

Respuesta
1
Personalmente, utilizaría la fecha en fromato ansi (yyyymmdd, 20091231, por ejemplo) y luego utilizaría este query:
SELECT * FROM reservas WHERE REFALOJAMIENTO=$RefAlojamiento AND LLEGADA='$llegada' AND SALIDA<='$llegada'
De todos modos, y a los efectos de tener una búsqueda más rápida y sencilla, yo guardarí en una tabla todos los días que se queda cada ocupante.
Luego puedes hacer un query tipo
 "SELECT COUNT(*) as ocupantes FROM ocupacion WHERE fecha = '$fecha'"
Y te dirá cuantas habitaciones ocupadas tienes, para esa fecha
Vale, pero porque ese formato de fecha y la consulta de comprobación de ocupación no sería más exacta así.
SELECT * FROM reservas WHERE REFALOJAMIENTO=$RefAlojamiento AND LLEGADA>='$llegada' AND SALIDA<='$llegada'
SELECT * FROM reservas WHERE REFALOJAMIENTO=$RefAlojamiento AND LLEGADA>='$salida' AND SALIDA<='$salida'
Así cubriría los días entre LLEGADA y SALIDA o ¿me equivoco?
Saludos y muchas gracias.
No quise decir que lo tuyo estaba mal, para nada, te trerá los datos que necesitas. Simplemente te sugerí una forma más ordenada, y más fácil de indexar, pra cuando tengas muchos datos en tu base de datos
No ya hombre, y si estuviera mal, está mal y punto, para eso se consulta a ustedes para aclarar las dudas, La aclaración fue porque me di cuenta que en la 1ª pregunta te puse en los query ("... AND LLEGADA='$llegada' AND SALIDA<='$llegada'").
Luego pense en este query ("... AND LLEGADA>='$llegada' AND SALIDA<='$llegada'") para hacer más exacta la consulta y comprobara los días en medio de lo que ya existe en los campos LLEGADA y SALIDA. Y te pregunto ¿es más exacta esta consulta a la bbdd que la 1ª?.
Y por supuesto que me has ayudado mucho.
Gracias!
Si, no me había dado cuenta la diferencia, incluso puedes juntar todo en una sola consulta:
SELECT * FROM reservas WHERE REFALOJAMIENTO=$RefAlojamiento AND (LLEGADA>='$llegada' OR LLEGADA>='$salida') AND (SALIDA<='$llegada' OR SALIDA<='$salida')
Marcelo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas