预约系统日期

问题描述:

我有问题想想这个低谷与PHP & Mysql。我已阅读How to implement check availability in hotel reservation system和更多,但他们看起来不同。预约系统日期

我必须制定一个预约系统,在这个预约系统上可以预约6小时的传送室,所以当用户预约一个日期,例如24/04/2012他然后选择出租的开始时间(00:00-06:00, 06:00-12:00, 12:00-18:00,18:00-24:00).并且用户想要租用房间的总小时数(6,12,18等)。

日期存储为整数(时间戳)。

我有两个问题,我不知道如何接收一个月内所有可能的房间还没有预订的日子,以及如何检查是否有新的预订。

我知道如何计算起始日期和结束日期的用户输入,但我不能找到正确的MySQL查询PHP检查可用性。

这可能很简单,但不知何故,因为结束日期总是可变的我只是无法找到答案。

在此先感谢你们!

编辑表结构:保留

 
id int(11)   
user_id int(11)  
reservation_name varchar(255)  
start_date int(11)   
end_date int(11)   

我认为保留是唯一一个相关

+1

这将有助于包括你的表结构。编辑你的问题并粘贴(在'

'标签之间)'DESCRIBE表的输出;'为你的数据库中的每个相关的'表'。 –
                        
                            
    eggyal
                                2012-04-24 19:18:22
                            
                        
                    
                
+0

表结构? – 2012-04-24 19:18:32

+0

对不起,没有想到现在添加它。 – 2012-04-24 19:27:39

你会发现它非常难以产生可用天在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

+0

我现在不能测试它,因为我不在工作,但看到您在链接到的问题上生成的查询与我在上面评论中提到的查询类似,我相信您给了我正确的答案,似乎符合逻辑。非常感谢,我现在已经在这里工作了大约8个小时。逻辑有时似乎很难.. – 2012-04-24 20:51:06

这辉煌简单的MySQL查询必须做的伎俩:

Checking for overlapping car reservations

此解决方案仅适用于“日期”,但你可以轻松地与其它“小时”总IT