每天的mySql时间段?

时间:2014-07-14 10:43:12

标签: javascript php html mysql database

我正在开发一个新的房间预订系统,到目前为止一切都还不错,但现在我遇到了一个问题,我似乎无法找到答案。

客房可在每周的上午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)
) ;

由于

3 个答案:

答案 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-tablebookingno来占用空间。剩下的房间将可用。

答案 1 :(得分:0)

我选择了3张桌子。

时间段:timeId,timeSlot
rooms:roomId,roomName
预订:roomId,timeId,日期,状态

已更新以适应您的问题编辑

由于您已经有一张预订表,您几乎就在那里。

  1. 将timeStart和timeEnd替换为timeslot_id。
  2. 添加列room_id。
  3. 我不确定您是如何使用" 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)

注意:

  1. 您的预订表中不包含预订房间的任何信息。

  2. 您需要一张房间表,至少ID =>房间描述

  3. 定期预订需要单独处理,并作为个别活动注入预订表。

  4. 查找房间是否可用:

    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)
    

    如果您的结果在指定时间内为零,则可以使用房间,否则不是