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

时间:2016-03-03 16:40:59

标签: php mysql

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

  • 由roomno(PK),房型和房价组成的房间表

  • 可用性表包括roomno(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个单人房,并且已经预订了一个单人房间,例如23日3月27日到3月27日,这使其他四个房间免费...

但是我给出的代码不能解决这个问题......有人可以给我正确的查询来正确检查房间的可用性吗?

1 个答案:

答案 0 :(得分:0)

我认为您的可用性表并非实际可用性,而是预订。该表中数据的生命周期尚不清楚,但看起来你的查询并没有在没有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=''))