我正在为一家小旅馆开发预订系统。我对PHP很在行,但对SQL不太在行。。。我做了一个表格,你可以输入你的信息,房间的数量,然后用日历选择到达日期和退房日期。
现在一切都很顺利,直到我到了一个地步,你必须检查哪些房间是可用的,这让我头痛。你可以预订10个房间。
我目前在MySQL中有一个表,存储信息、日期、预订ID和房间ID/号码。
如何使用SQL来检查哪些房间是可用的而哪些房间不是可用的?
是不是看起来像

"SELECT * FROM bookings WHERE checkinDate >= '$formCheckin'
 AND checkoutDate <= '$formCheckout' "

然后拿到房间号数一数?
非常感谢您的帮助!

最佳答案

如果您想知道某个时段内是否有房间可用,那么逻辑如下:

SELECT r.*
FROM rooms r
WHERE NOT EXISTS (SELECT 1
                  FROM bookings b
                  WHERE b.roomid = r.roomid AND
                        b.checkinDate <= $formCheckOut AND
                        b.checkoutDate >= '$formCheckIn
                 );

我不确定这两种情况是否需要平等比较。其逻辑是,如果没有在结账日期之前开始的预订和在结账日期之后结束的预订,则房间是可用的。
但是,对于十个房间,我建议您每天为每个房间保留一张桌子,比如说在接下来的十年(每年增加一次)。这样的桌子不是很大,可能更容易理解如何使用。另外,你可以处理一些事情,比如一对夫妇预订一个星期的房间,但是在头三天只有一个人在房间里。

关于php - 酒店客房预订/预订,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33055270/

10-13 04:33