php - 如何提供合适的查询来检查房间可用性

标签 php mysql

我正在尝试创建一个酒店房间预订应用程序....我创建了两个表

  • 由roomno(PK)、房型、房价组成的房表

  • 由房号(FK)、房间类型、入住日期和退房日期组成的空房表

到目前为止,我创建的 PHP 代码允许我检查给定日期特定类型房间的可用性......

$type = $_POST['pincode'];
$cin = $_POST['cin'];
$cout = $_POST['cout'];

$sql="select * from avalability where type = '$type' and cout>='$cin' and cin<='$cout'";
$res=mysqli_query($con,$sql);
$check=mysqli_fetch_array($res);
if(isset($check))
{
echo "rooms not available";
}
else
{
echo "rooms available";
$insert="insert into login.avalability(type,cin,cout) values('$type','$cin','$cout')";
mysqli_query($con,$insert);
}
mysqli_close($con);
?>

现在我的问题是:假设我的房间表上有 5 个单人间,其中一个单人间已被预订为 3 月 23 日至 3 月 27 日,这使得其他四个房间免费......

但是我提供的代码不适用于这个问题...任何人都可以给我正确的查询以正确检查房间可用性吗?

最佳答案

我认为您的可用性表并不是真正的可用性,而是预订。该表中数据的生命周期不清楚,但您的查询似乎没有在没有 cin 或 cout 的地方进行。

$sql="select * from avalability where type = '$type' and cout>='$cin' and cin<='$cout'"

应该是这样的

$sql="SELECT * FROM avalability WHERE type = '$type' AND ((cout>='$cin' AND cin<='$cout'") OR (cout='' AND cin=''))

关于php - 如何提供合适的查询来检查房间可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777963/

相关文章:

php - 如何在 CentOS 上的 php 中使用 mail() 从 Web 应用程序发送电子邮件(sendmail、postfix、...?)

php - 如何在给定的日期范围和时间使用 PHP 生成 .ics 文件

php - 当返回序列化对象时,Redis 会剪切字符串。找不到任何限制

mysql - 连接 2 个表时,我可以使用 * 吗?

php - 为什么在 mysql_query ("string"中使用 $query 而不是直接查询字符串)?

php - 在页面中多次获取相同数据的最佳方法是什么?

mysql - 我如何将 SQL 子查询与 django orm 一起使用

jQuery 拖放 : What's the best way to store multiple object positions in database?

php - 查询将字符串数据转换为 int 数据以获得最大值

php - 声明php数组为javascript数组的情况