php - 酒店房间预订/预订

标签 php mysql sql

我正在为一家小型酒店开发预订系统。我非常擅长 PHP,但不太擅长 SQL...我制作了一个表格,您可以在其中输入您的信息、房间数量并使用日历选择到达日期和退房日期。

现在一切都很顺利,直到我不得不检查哪些房间可用,这让我很头疼。您可以预订 10 间客房。

我目前在 MySQL 中有一张表存储信息、日期、预订 ID 和房间 ID/号码。

您将如何编写 SQL 来检查哪些房间可用,哪些不可用?

它应该看起来像

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

然后获取roomID并统计?

非常感谢任何帮助!

最佳答案

如果你想知道一个房间在一段时间内是否可用,那么逻辑如下:

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
                 );

我不确定这两个是否都需要进行相等比较。其逻辑是,如果没有在退房日期之前开始和在入住日期之后结束的预订,则房间可用。

但是,对于十个房间,我可能建议您按天保留每个房间的表格,比如说接下来的十年(每年增加一次)。这样的表不是很大,可能更容易理解如何使用它。此外,您还可以处理一些事情,例如一对夫妇预订房间一周,但前 3 天只有一个人在房间里。

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

相关文章:

php - 如何在 mysql 查询 php 中回显当前日期

PHP/MySQL 将相同的数据插入到两个表中

PHP 数组 mysql 检索每条记录(第 2 部分)

sql - 从表 Y 中过滤表 X 中的值

php - 电子邮件确认后如何将用户添加到数据库?

php - 无法在php中创建表

php - URL 不显示文件名或扩展名,怎么办? (PHP)

mysql - mysql 的 WHERE 子句中可以使用别名吗?

sql - 防止 ASP .NET 页面必须轮询数据库以进行更改

javascript - 使用 Google Maps、C#、ASP.net、SQL Server 显示带标记的 map 。 map 未显示