首页 > 解决方案 > 如何在两个日期之间验证房间的可用性?

问题描述

我有一个关于酒店房间预订系统的问题,这些是我的桌子:

在此处输入图像描述 我想在 php 中找到带有这个 sql 请求的可用房间:

$stmt = $dbh->prepare('
SELECT * 
  FROM chambres c
  LEFT 
  JOIN booking b
    ON c.numero_chambre = b.no_chambre 
 WHERE b.no_chambre IS NULL 
    OR (b.check_out <= :check_in AND b.check_in <= :check_out)
    OR (b.check_out <= :check_in AND b.check_out >= :check_out)');
$stmt->bindParam(':check_in',$date_in);
$stmt->bindParam(':check_out',$date_out);
$stmt->execute(); 
$resultats= $stmt->fetchAll(\PDO::FETCH_ASSOC);
print_r($resultats);

我认为条件有效,但例如,如果我想在“2021-01-15”和“2021-01-22”之间找到可用房间,它仍然会发现房间 1 可用,因为它可以在我的预订表,行:

[id] => 1 [hotel_id] => 1 [numero_chambre] => 1 [check_in] => 2021-01-13 [check_out] => 2021-01-15 [no_chambre] => 1 [date_creation] => 2021 -01-11 [client_id] => 1)

有人会想办法解决这个问题吗?

非常感谢 !

标签: phpmysql

解决方案


推荐阅读