预订系统日期

时间:2012-04-24 19:16:54

标签: php mysql date timestamp

我在使用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)         

我认为保留是唯一相关的

2 个答案:

答案 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)

这个出色的简单MySQL查询必须要做到这一点:

Checking for overlapping car reservations

此解决方案仅适用于“日期”,但您只需将其与其他“小时”汇总即可