我正在开发一个新的房间预订系统,到目前为止一切都还不错,但现在我遇到了一个问题,我似乎无法找到答案。
客房可在每周的上午8:30至晚上10:00之间预订。我已经创建了用于创建新客户和预订的页面,我现在只是尝试创建一个部分,以便检查日期和时间是否可用。
timeId timeSlot room1 room2 room3
1 08:30:00 Available Available Available
2 09:45:00 Available Available Available
3 09:00:00 Available Available Available
4 09:15:00 Available Available Available
5 09:30:00 Available Available Available
预订完成后,会将Available
更改为Requested
房间,一旦工作人员确认,将再次更改为Booked
。
所以我的问题是,我如何让它在不同的日子里工作?我需要每天都看到上面的表格。
提前致谢
更多信息:
这是我的表格,其中包含预订:
DROP TABLE IF EXISTS booking;
CREATE TABLE IF NOT EXISTS booking (
customerno int(8) NOT NULL,
bookingno int(8) NOT NULL AUTO_INCREMENT,
youthCafe varchar(3) DEFAULT NULL,
inkwellMain varchar(3) DEFAULT NULL,
inkwellSmall varchar(3) DEFAULT NULL,
kitchen varchar(3) DEFAULT NULL,
outsideCatering varchar(3) DEFAULT NULL,
bookingDateStart DATE NOT NULL,
timeStart time NOT NULL,
timeEnd time NOT NULL,
recurFreq varchar(15) DEFAULT "N/A",
attending int(3) DEFAULT NULL,
layout varchar(15) DEFAULT NULL,
equipment varchar(20) DEFAULT NULL,
catering varchar(3) DEFAULT NULL,
cateringOptions varchar(128) DEFAULT NULL,
message varchar(128) DEFAULT NULL,
PRIMARY KEY (bookingno),
FOREIGN KEY (customerno) REFERENCES customers(customerno)
) ;
由于
答案 0 :(得分:1)
如果时间表已修复,请使用此功能。
Table-1
TimeID, Time
Table-2
RoomID, ROom
Table-3
ID, Date, TimeID, RoomID
如果未安排时间表
Table-1
TimeID, StartDate, EndDate, ArrivedTime, DepartureTime
Table-2
RoomID, Room
Table-3
ID, TImeID, RoomID
希望这能解决您的问题
booking-table
customerno, bookingno, bookingDateStart, timeStart, timeEnd
room-table
RoomID, Room
Relation-table
RelationID, bookingno, RoomID
假设bookingno是独一无二的。
您可以根据日期使用booking-table
加入(内部加入)relation-table
和bookingno
来占用空间。剩下的房间将可用。
答案 1 :(得分:0)
我选择了3张桌子。
时间段:timeId,timeSlot
rooms:roomId,roomName
预订:roomId,timeId,日期,状态
已更新以适应您的问题编辑
由于您已经有一张预订表,您几乎就在那里。
我不确定您是如何使用" bookingDateStart",但理想情况下这应该是" bookingDate"。
看起来像是"预订"表也试图容纳重复预订。将其移至单独的表格 - booking_recurring。
DROP TABLE IF EXISTS booking_recurring;
CREATE TABLE IF NOT EXISTS booking_recurring (
recurring_id int(8) NOT NULL AUTO_INCREMENT,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
room_id NOT NULL,
customer_id NOT NULL,
timeslot_id NOT NULL
PRIMARY KEY (recurring_id),
FOREIGN KEY (customerno) REFERENCES customers(customerno)
FOREIGN KEY (room_id) REFERENCES rooms(room_id)
FOREIGN KEY (timeslot_id) REFERENCES timeslots(timeslot_id)
);
每当定期约会(cronjob等?)时,只需在您的预约中输入一行"表
答案 2 :(得分:0)
注意:
您的预订表中不包含预订房间的任何信息。
您需要一张房间表,至少ID =>房间描述
定期预订需要单独处理,并作为个别活动注入预订表。
查找房间是否可用:
SELECT COUNT(*) FROM bookings b
JOIN rooms r ON b.roomId = r.id
WHERE b.bookingDateStart=$bookDate AND r.id=$roomId
AND ($time > b.startTime AND $time < b.endTime)
如果您的结果在指定时间内为零,则可以使用房间,否则不是