我目前正在使用 PHP 进行课程安排。我想要发生的是通知用户计划是否已经存在或者它是否与数据库中的其他计划重叠。
对于每个时间表,我需要考虑三件事。时间、日期和房间。
例子:
DB现有: MWF 9:00am - 10:00am;A室
用户输入#1: MWF 9:00am - 10:00am;A室
通知:计划现有。
用户输入#2: MWF 8:00 - 10:00am;A室
用户输入#3: MWF 9:30 - 10:00am;A室
通知:计划重叠。
请出主意。谢谢。
这是伪代码中的快速而肮脏的解决方案
表房间(Room_id [int],Room_name [varchar])
表 room_use(星期日 [bit],星期一 [bit],星期二 [bit],星期三 [bit],星期四 [bit],星期五 [bit],星期六 [bit] , Start_time [时间], End_time [时间])
Start transaction;
select count(*) as n from Room_use
where Room_id=? and Time between ? and ? and
#build this dynamically with php
(Sunday=1 or Monday=1 or Tuesday=1 or Wednesday=1 or Thursday=1 or Friday=1 or Saturday=1)
if n>0 rollback
else insert into room_use (Room_id, Sunday, Monday .......) values (?,?,?......)
commit;