我在使用我必须建立的预订系统(PHP/Mysql)验证日期时遇到了麻烦。 我之前发过类似的问题Reservation system dates但是有些变化。预约系统租用一天的区块
我遇到的问题; 我们在办公室有一间工作室/会议室。这是有限的时间租金。用户选择什么日子,什么时间以及他要租用房间多少小时。
预订一步一步:
1-用户选择他想要租工作室的月份。 2-用户选择他想租赁演播室的那一天。 (这里我卡住了) 3-用户选择他希望得到密钥的时间。
时间上,关键是应收款:
00:00:00 - 06:00:00
06:00:00 - 12:00:00
12:00:00 - 18:00:00
18:00:00 - 24:00:00
这些时间的时候,在用户将收到大门的钥匙。
4-用户选择他希望租用工作室的小时数。
问题: 我能够检查工作室租用的日期,但不是确切的时间。 我知道如何在PHP中检查时间。但是,例如,
用户1于2012年4月27日12:00:00至18小时后出租演播室。 用户2想要在2012年4月26日18:00:00至12小时后租用工作室。 用户3想在4月28日租用工作室。
我如何能够检查用户2是否可以租到工作室,直到最大27日4月12:00:00。 如何检查用户3是否可以在28日租用工作室并确保在06:00之后可用。
数据库:
id int(11)
user_id int(11)
rental_name varchar(255)
key_receive_time varchar(255)
start_date int(11)
end_date int(11)
total_hours int(11)
我一直在这2天连续现在,仍然无法破解它。我认为解决方案很简单,但我可能在错误的方向搜索。
在此先感谢。
EDIT例如queryie:
SELECT * FROM reservations
WHERE (start_date >= " . $start_block_1 . " AND end_date <= " . $end_block_1 . ")
OR (start_date >= " . $end_block_1 . " AND end_date <= " . $start_block_1 . ")
的$start_block_1
和$end_block_1
表示时间戳00:00:00 - 一天的六点00分00秒块。
我执行此查询4次,因为在用户可以拾取密钥的当天有4个块。
您的查询如何查看以及它们出错的位置? – 2012-04-26 08:34:37
实施例的查询:( “$ start_block_1”“。$ end_block_1 ”起始日期> = \t \t \t \t日期和结束日期<=)'SELECT * FROM保留WHERE \t \t \t OR(起始 \t \t \t> =“ 。。$ end_block_1 “ \t \t \t \t日期和结束日期<=” $ start_block_1“)'的$ start_block_1和$ end_block_1代表** 00:00:00 - 06:00: – 2012-04-26 08:37:56
一天的00 **块你是否在'start_date'和'end_date'列中存储了日期和时间?这是一个简单的查询。 – 2012-04-26 08:41:47