我在使用PHP & Mysql
时遇到问题。我读过How to implement check availability in hotel reservation system等等,但看起来不一样了。
我必须建立一个预订系统,在这个预订系统上可以预订6小时的converence房间,所以当用户在例如24/04/2012的日期进行预订时,他会选择租赁的开始时间{{1用户想要租用房间的总小时数(6,12,18等)。
日期存储为整数(时间戳)。
我有两个问题;我不知道如何收到房间仍在预订的一个月的所有可能日期,以及如何检查是否可以进行新的预订。
我知道如何计算用户输入的开始日期和结束日期,但我无法找到正确的 mysql查询或 php检查以获取可用性。
这可能非常简单,但不知何故因为结束日期总是变量我只是找不到答案。
先谢谢你们!
编辑表格结构:预订
id int(11) user_id int(11) reservation_name varchar(255) start_date int(11) end_date int(11)
我认为保留是唯一相关的
答案 0 :(得分:1)
您会发现在MySQL中生成可用天数列表非常困难。我建议你在你想要的月份内选择预定天数的有序列表,然后在PHP中跳过当天的所有日子,如果它与你的MySQL查询中的下一个预订日相匹配,则跳过那一天。 this question的答案将帮助您构建要在PHP中循环的日期。在伪代码中:
$booked_days = sql(select all booked days in month order by day);
for each $day in month {
if $day != current($booked_days) {
// $day is not booked
} else advance_next($booked_days);
}
要检查是否可以进行新预订,您可能需要查看我今天早些时候对a very similar question的回答。
答案 1 :(得分:0)