1661
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re:Problema con fechas en un ejercicio
« en: 24 de Agosto 2014, 22:23 »
No sé si estaré acertado o no, pero empezaría planteando todo el proceso desde un punto de vista de lógica a aplicar para luego pasar a crear el código:
Las posibilidades de que dada una fechaSolicitaDeEntrada y fechaSalidaSolicitada exista coincidencia con una reserva serían:
Ejemplo 1: Estamos dentro del intervalo de la reserva. Solicito del 10 al 15 de octubre. Hay reserva del 10 al 12 de octubre ó hay reserva del 10 al 15 de octubre
fechaSolicitadaDeEntrada >= fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva
Ejemplo 2: La reserva empezó antes pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 7 al 12 de octubre.
fechaSolicitadaDeEntrada < fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva
Ejemplo 3: La solicitud empieza en un día de reserva y termina fuera de la reserva. solicito del 10 al 15 de octubre. Hay reserva del 13 al 18 de octubre.
fechaSolicitadaDeEntrada > fechaIngresoEnLaReserva y fechaSolicitadaDeEntrada < fechaSalidaEnLaReserva
En estos tres casos la habitación no está disponible para reserva, en otro caso sí está disponible.
También lo podemos plantear al revés:
Si fechaSolicitadaEntrada<fechaIngresoEnLaReserva y fechaSolicitadaSalida < fechaIngresoEnLaReserva -- > la habitación está libre (se intenta tomar antes de la reserva)
Si fechaSolicitadaEntrada > fechaSalidaEnLaReserva -- > la habitación está libre (se intenta tomar después)
Ahora esbozando lo que sería el proceso en código:
Finalmente, mostramos las habitaciones disponibles (todas las que existan en array disponible)
El proceso lo veo un poco laborioso pero al menos creo que con esto se llegaría al resultado deseado. Quizás haya que hacer algunos ajustes y pruebas
Las posibilidades de que dada una fechaSolicitaDeEntrada y fechaSalidaSolicitada exista coincidencia con una reserva serían:
Ejemplo 1: Estamos dentro del intervalo de la reserva. Solicito del 10 al 15 de octubre. Hay reserva del 10 al 12 de octubre ó hay reserva del 10 al 15 de octubre
fechaSolicitadaDeEntrada >= fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva
Ejemplo 2: La reserva empezó antes pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 7 al 12 de octubre.
fechaSolicitadaDeEntrada < fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva
Ejemplo 3: La solicitud empieza en un día de reserva y termina fuera de la reserva. solicito del 10 al 15 de octubre. Hay reserva del 13 al 18 de octubre.
fechaSolicitadaDeEntrada > fechaIngresoEnLaReserva y fechaSolicitadaDeEntrada < fechaSalidaEnLaReserva
En estos tres casos la habitación no está disponible para reserva, en otro caso sí está disponible.
También lo podemos plantear al revés:
Si fechaSolicitadaEntrada<fechaIngresoEnLaReserva y fechaSolicitadaSalida < fechaIngresoEnLaReserva -- > la habitación está libre (se intenta tomar antes de la reserva)
Si fechaSolicitadaEntrada > fechaSalidaEnLaReserva -- > la habitación está libre (se intenta tomar después)
Ahora esbozando lo que sería el proceso en código:
Código: [Seleccionar]
$arrayDeIdHabitaciones -- > Almacenamos aquí cada id de habitación
Ahora hacemos un bucle:
Para cada idHabitación "idHabitac" en $arrayDeHabitaciones
{
arraySeleccion = Seleccionar las filas de la tabla reservas donde (idHabitac sea igual a idHabitacion de esa fila)
Para cada fila en arraySeleccion {
(Si fechaSolicitadaEntrada<fechaIngresoEnLaReserva y fechaSolicitadaSalida < fechaIngresoEnLaReserva) ó
(fechaSolicitadaEntrada > fechaSalidaEnLaReserva) ENTONCES {estadoHabitacion[idHabitacion] = 'DISPONIBLE'; disponible[i]=idHabitacion)
ELSE
{estadoHabitacion[idHabitacion] = 'OCUPADA'}
}
}
Finalmente, mostramos las habitaciones disponibles (todas las que existan en array disponible)
El proceso lo veo un poco laborioso pero al menos creo que con esto se llegaría al resultado deseado. Quizás haya que hacer algunos ajustes y pruebas