我仍然倾向于使用PHP / MySQL,但由于StackOverflow上的实体已经学到了很多东西。我正在尝试使用两个表来设置一种房间预订系统:
房价表:有客户可能想要租用的房型的价格以及他们希望使用它的日期(星期几)。价格根据星期几和每间客房而有所不同。
我为每种房型设置了不同的桌子,因为每种房型都为每周的每一天提供不同的价格。因此,有一个Alpha房间表,Bravo房间等。在Alpha表格中是星期几的标题,其中定价预先输入到行中。
客户信息表:具有特定客户的名称,地址,房间使用日期等数据。
Alpha-room价格表: 太阳= 100美元;周一= 200美元;星期二= 300美元等等。
Bravo-room价格表: 太阳= 100美元;周一= 200美元;星期二= 300美元等等。
客户数据表: 客户名称;日期余地使用;地址; day_subtotal; grand_total。
我正在尝试找到以下的PHP代码:
我知道这与加入有关,但我发现很难掌握这个概念,如果有人可以证明使用这个例子,我想我会更好地理解如何处理这种交易。 / p>
提前感谢大家的建议或替代方法。
答案 0 :(得分:5)
首先,你应该稍微分开你的数据库,你应该有四个表。 rooms
,prices
,clients
和bookings
。设置有点像这样...
rooms
应包含以下字段:id
,name
和description
。
prices
应包含以下字段:id
,price
,room_id
和day
。
clients
应包含以下字段:id
以及您要在用户上存储的任何内容,例如姓名,电话号码或其他内容。
bookings
应包含以下字段:id
,client_id
,room_id
,started_at
和ended_at
。最好started_at
和ended_at
字段为int,填充PHP的time()
方法。
您可以在表格中添加任何您想要/需要的额外字段。
将表格分开,您将能够正确查询数据库。所以回答你的问题...
查看使用房间的日期...... 您现在可以通过执行以下操作来查询特定日期是否正在使用房间......
<?php
$selectedDate= mktime(); // Create a UNIX timestamp based on the day the user selected.
$query = "SELECT r.name, r.description
FROM rooms r, bookings b
WHERE b.room_id = r.id
AND b.started_at < $selectedDate
OR b.ended_at > $selectedDate";
$result = $pdo->query($query);
?>
查找该日期的费用
<?php
$selectedDate = mktime() // Create a UNIX timestamp based on the day the user selected
$dayOfWeek = Date('N', $selectedDate); // This will give the numerical day of the week.
$query = "SELECT price
FROM prices
WHERE room_id = $roomId
AND day = $dayOfWeek";
$result = $pdo->query($query);
?>
在客户表中记录单位成本
由于已经在另一个表中提供了信息,这样做很愚蠢。永远不要在数据库中重新创建相同的信息。如果是,那么您错误地构建了数据库。
客户表中的总计
再次,愚蠢......不要重新创建数据......
但是,为了找到这些信息,您首先需要在预订表上进行查询,并查看用户占用房间的开始和结束日期。
计算客户端在房间中的时间长度,(ends_at - started_at)/ 86400,(86400是一天中的秒数),它将给出客户端的天数在房间里。
现在你知道哪些日子以及客户在房间里的时间,你可以动态创建一个sql调用来选择你需要的星期几,请记住Date('N', $timeStamp)
会给你给定时间戳的星期几。
然后只是做一个简单的添加。
我已经在这里给了你基础知识,你可以从答案一中修改查询,以告诉你房间是否可以在用户要求的时间范围内预订。
我希望这涵盖了你所询问的一切......