Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Как реализовать занятость


Автор: pushok 4.8.2010, 18:32
Здравствуйте.

Такая проблема.
Есть отель. Есть номера. Хотел бы реализовать просмотр и бронирование номеров в отеле. В общем-то с php я справлюсь, подскажите как это делается? Какие поля должны быть в БД? Может отдельной таблицей? Чтобы я мог производить поиск, какие номера свободны какие нет.

Номера описаны в таблице, имеют свои id.

Заранее благодарен за помощь.

Автор: bars80080 4.8.2010, 19:38
Цитата(pushok @  4.8.2010,  18:32 Найти цитируемый пост)
Может отдельной таблицей?

а как не отдельной таблицей?

раз отель один, то надо ввести таблицы: комнаты, типы комнат, варианты размещения, типы вариантов размещения, цены, даты бронирования

rooms
id int, room_type tinyint, status tinyint, ... остальные поля описания
здесь room_type = id из таблицы room_type,
status показывает, свободен ли номер

room_types
id int, description varchar (описание)

room_variants
id int, variant_type tinyint, room_id int
здесь variant_type = id из таблицы типов вариантов размещения, а room_id - конкретный номер к которому этот вариант применим

room_variant_types
id int, description varchar (описание), ... остальные поля описания

prices
id int, variant_id int, price decimal(12,2)
здесь variant_id = id таблицы room_variants

orders
id int, variant_id int, arrival date, leave date, status tinyint, ... остальные поля описания
здесь arrival - дата прибытия, leave - дата съезда, status - состояние заказа (забронирован, оплачен, в ремонте)

именно по таблице orders (+ потянутся остальные) уже и будет смотреться, свободен ли номер или нет

Автор: pushok 19.8.2010, 19:38
Спасибо за ответ.

Вопрос такой: дата прибытия типа DATE и отправления - это я и сам догадался...

Но я не смог сделать поиск. Проблема в следующем:

имею в $date1 и $date2 даты, определяющие срок, на который ищем номер в отеле. Как мне составить запрос к таблице или отобрать из запроса нужные мне номера??
Делал так:

Код

$result=mysql_query("SELECT * FROM orders WHERE arrival>".$date1." AND leave<".$date2);


но результат неудовлетворительный. Подскажите в чем моя ошибка и как правильно составлять запросы с датами (DATE)

Автор: capitan 19.8.2010, 22:55
Код

.....
WHERE DATE_FORMAT(data, '%Y%m%d') BETWEEN {$data_start} AND {$data_finish} 
.....


Копать в эту сторону надо

Автор: xoslv 5.10.2010, 13:31
Здесь фишка немного иная! smile
Надо делать отбор по номерам, джоинить таблицу ордер и проверять, что бы в ней не было записей на номера на определённый период!

Делал я похожее и судя по твоему вопросу, делаешь ты что-то совсем простое! smile У меня вопросы были гораздо круче и решать их приходилось намного сложнее!

Из-за частых похожих задач, создал свою црм и каждый раз её правлю под определённые нужды заказчика!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)