php - 客房和可用日期 PHP/MySQL

标签 php mysql

因此,我正在设计一个适用于酒店的 Web 应用程序,它最终应该成为为每个酒店网站安装一些额外代码的简便方法。该应用程序使用 php 和 mysql。所以,正如您可能猜到的那样,我对数据库结构感到很困惑。不过,我做了一些研究,我不只是要求一个成熟的预订系统。

因此,酒店的老板必须拥有多种类型的客房。所以我想房间的 table 可能是“必须的”。我们开始吧:

---------- Rooms Table (example)

ID     NAME         ADULTS     ROOM_COUNT     PRICE/NIGHT     

1      DoubleRoom   2          5              45$
2      Family       3          2              75$
3      Single       1          3              35$

这很简单。 可以通过我的应用程序添加房间,我还会附上适当的描述以及每个房间的各种图片。但让我们回到正题。人们应该进行预订,以便...

---------- Bookings Table (example)

ID    ROOM_ID      BOOKING_USER     CHECKIN (timestamp)   CHECKOUT (timestamp)

1     2            A full name      208420842042          308230482042824
2     3            A full name      208423242525          529752972595272
...

所以,这就是 -希望- 数据库结构。现在,我正在考虑一种方法来检查可用性。我知道,这听起来可能很愚蠢,但我想不出一个聪明而简单的方法。在网站的表单中,应该有以下字段:check-in datecheck-out-date 然后将转换为时间戳和..这里是我卡住的时间!

当我只有上述表格时,如何查询房间的可用性。有什么办法或者我需要更改我的数据库结构吗?即使我设法检查可用性,房间总数 (ROOM_COUNT) in count 是怎么来的?我的意思是,如何查看多种类型房间的可用性?我想是这样的:

SELECT count(ROOM_ID) FROM bookings WHERE
bookings.checkin < DATE_GIVEN_AS_CHECKIN_INPUT and
bookings.checkout > DATE_GIVEN_AS_CHECKOUT_INPUT

然后根据此查询的输出,我会知道是否有可用房间。但是房间数呢?有没有更好的方法?

如果这里有人可以启发我,我将非常高兴。提前致以最诚挚的问候和感谢,即使是阅读本文!
布兰

附言哦,这不是作业! :P 反正我也不去上学 :D

最佳答案

以下查询将找到所有没有预订的房间,或者在入住/退房输入之前或之后的预订。

SELECT r.*
FROM rooms r
LEFT JOIN bookins b ON b.room_id = r.id
WHERE b.id IS NULL
OR (b.checkout >= DATE_GIVEN_AS_CHECKIN_INPUT AND b.checkin >= DATE_GIVEN_AS_CHECKOUT_INPUT)
OR (b.checkout <= DATE_GIVEN_AS_CHECKIN_INPUT AND b.checkout <= DATE_GIVEN_AS_CHECKOUT_INPUT)

要获取房间数,只需将 SELECT r.* 替换为 SELECT COUNT(DISTINCT r.id)

关于php - 客房和可用日期 PHP/MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043207/

相关文章:

php - Laravel 7.x - 将 url 中的参数传递到注册表单

PHPUnit: stub 方法未定义

PHP session 未初始化

mysql - 非常简单的 MySQL SELECT 语句导致错误

mysql - 使用 REF_CURSOR 转换 Oracle 存储过程并将全局变量打包到 Postgresql 或 MySQL

php - 将正则表达式存储在 MySQL 数据库表中并对其进行处理

php - 使用 php 匹配两个变量的内容

php - 无法将数据从表单发送到mysql

javascript - 如何获取一行 html 数据表的值?

mysql - 使用 GROUP BY 时如何返回数组