我正在尝试制作一个预订页面,该页面需要用户输入入住和退房日期以及房间号。
这是我当前的代码;它当前的功能是获取选定房间号的所有预订并检查其所有日期范围以查看当前预订之一是否与用户输入日期重叠。如果重叠则回显错误,否则什么都不做。 :
$sql18 = "SELECT rid, checkin, checkout FROM bookings
WHERE rid = $rNumber"; //$rNumber is room number obtained from a dropdown list
$results18 = mysqli_query($conn, $sql18);
while ($row = mysqli_fetch_array($results18)) {
if (('$cInDate' >= $row["checkin"] && '$cInDate' < $row["checkout"]) || //$cInDate and $cOutDate are user inputs
('$cOutDate' > $row["checkin"] && '$cOutDate' <= $row["checkout"])) {
echo "invalid booking";
}
}
我测试了 if 语句以触发错误,但没有成功。我仍然没有错误地通过 if 语句
最佳答案
您可以在 mysql 查询中进行比较,而不是在 php 中进行比较。
$sql18 = "SELECT rid, checkin, checkout
FROM bookings
WHERE rid = $rNumber
AND checkin <= '{$row['checkout']}'
AND checkout => '{$row['checkin']}'";
当您比较两个日期和两个日期时,您可以使用交叉比较,将 checkin
列与 checkout
日期和 checkout
进行比较包含 checkin
日期的列,如上面的查询所示。
关于PHP - 如何检查日期是否介于两个现有日期之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559468/