Я разрабатываю сайт для очень маленького курорта моего друга, см. Www.shivgangaresorts.com/dev
Этот курорт имеет 8 номеров, и все номера одного типа, поэтому каждый номер одинаково оценен.
Мне просто нужен код или логика, чтобы проверить наличие заданного нет. номеров на данной регистрации заезда и выезда.
Когда кто-то делает бронирование, детали, которые идут в таблице бронирования:
Пожалуйста помоги. Это очень важно, так как я буду интегрировать PayPal, так что не должно быть путаницы …
Если все номера доступны в течение 24 часов в день, 7 дней в неделю, то ваше бронирование должно иметь start_time (timestamp) и end_time (timestamp), а не только дату.
Стандартное резервирование, вероятно, имеет конкретное время начала (~ 6 вечера) и окончание (~ 11 утра), но вы можете быть конкретным, чтобы предлагать раннее прибытие или поздние выписки.
Это логичный пользователь:
Пользователь выбирает дату заезда и дату отъезда.
Ваша программа захватывает 6 часов проверки даты и 11:00 даты выписки и выбирает номера, которые не бронируются в течение этих времен, исходя из текущих резерваций. (возвратные комнаты)
Это звучит довольно простой подход, но вам, возможно, придется учитывать горничные, разделяя резервирование между комнатами, номерами на удержании и т. Д.
Я думаю, если вы проверяете доступность на каждом обновлении страницы, я бы вычислил, сколько свободных комнат хватит, сколько заказов действует в настоящее время:
select sum(number_of_rooms) from reservations where check_in_date <= now() and check_out_date >= now()
Это даст вам ваши текущие комнаты, которые заняты. Затем просто вычтите это значение из жестко заданного значения «общее количество комнаты».
Это может помочь нормализовать базу данных за счет того, что клиент и отдельный стол комнаты со связующим столом в таблице бронирования. Однако я не знаю о ваших недостатках.
Вам нужна процедура определения количества доступных номеров. Самый простой ответ для небольшого количества комнат – это прохождение каждой комнаты и проверка доступности в течение периода. То есть, если в течение этого периода существует резервирование для данной комнаты, оно недоступно.
Если вы хотите рассмотреть вопрос о разделении бронирования между комнатами, это становится более сложным, но вы должны затем проверить доступность каждой комнаты на каждый день в течение периода, а затем агрегировать результаты.