3

在 Stackoverlflow 上慷慨的编码人员的大力帮助下,我一直在学习 PHP+MySQL,并且我的第一个功能数据库即将结束,但被卡住了。

我正在尝试建立一个数据库,其中用户为每个人或家庭(最多 12 人)选择房间类型。该表格的设置是为每个人分配一个房间类别(因为产品是按人而不是按房间出售的)。可用房型为 SGL、DBL(最多 2 人)、TPL(最多 3 人)和 QUD(最多 4 人)。

我有一个表格,其中包含每种房间类型的输入价格,称为 tourprices,这些价格根据旅行开始的日期在一个名为 tourstart 的单独表格中有所不同。

基本上,我想编写代码来查看为每个人选择的房间类型,查找相关的房间价格,计算每个房间类型的入住人数,乘以价格 x 房间类型数量(在旁边显示每人价格每个人)并总结所有房间的总费用。

  • 价格表有行“ID、日期、SGL、DBL、TPL、QUD”
  • 客户表有行“ID、姓名、购买的旅游”
  • 预订表有行 *"Id, client_id, tour_id, tourdate_id, roomtype"*
  • 旅游表有行 *“Tour_id,旅游名称,对销售开放/关闭”*
  • 旅游日期表有行 *"Tourdate_id, tour_id, date1, date2, date3,... date25"*

例如: 旅游价格(每人)

  • 2012 年 5 月 1 日巡演 - SGL=$300;DBL=150 美元;TPL=100 美元;QUD=75 美元
  • 2012 年 10 月 1 日巡演 - SGL=$500;DBL=250 美元;TPL=166.67 美元;QUD=125 美元

用户想要预订 1 个 SGL、2 个 DBL、+ 1 个 TPL 用于 8 人的 1May2012 旅游。

因此,生成的确认显示应该类似于以下内容(以及通常的 HTML:“谢谢,您是最好的客户..blah,blah”,这已经很好了):

  • 人 1) SGL $300
  • 人 2) DBL $150
  • 人 3) DBL $150
  • 人 4) DBL $150
  • 人 5) DBL $150
  • 人 6) TPL $100
  • 人 7) TPL $100
  • 人 8) TPL $100

总价 = 1x$300 + 4x$150 + 3x$100 + 0x$75 = $1200

我已经为系统设置了 html 表单以及插入查询部分,并且数据正在发布到数据库中。对于计算查询(预订确认页面),我已经得到:

$selectedDate = $tourstart
$query = "SELECT `sgl`, `dbl`, `tpl`, `qud` FROM tourprices WHERE `tour_id` = $tour AND `tourstart` = $tourstart";
$query .= "COUNT `sgl` as SglRmCount FROM `clients`";
$query .= "COUNT `dbl` as DblRmCount FROM `clients`";
$query .= "COUNT `tpl` as TplRmCount FROM `clients`";
$query .= "COUNT `qud` as QudRmCount FROM `clients`";
$result = $pdo->query($query);
?>
  • a)我不确定这是否是最简洁的查询。
  • b) 就可以确定的而言,我的 SELECT 查询是否正确?
  • c)我如何将数学引入查询(或者这是在查询之外完成的?如果是,我该如何编码?)。

先感谢您。

4

1 回答 1

0

您创建的查询将不起作用。计数未正确使用。Count 旨在从选择字段中返回一个数字,如下所示:

SELECT COUNT(`sgl`) FROM your_table WHERE your_value = 0;

这将返回一个数字,该数字是返回的记录数的总和。以下是您创建的查询:

SELECT `sgl`, `dbl`, `tpl`, `qud` FROM tourprices WHERE `tour_id` = INPUTED_VALUE_FROM_PHP AND `tourstart` = YOUR_tourstart_VALUE COUNT `sgl` as SglRmCount FROM `clients` COUNT `dbl` as DblRmCount FROM `clients` COUNT `tpl` as TplRmCount FROM `clients`;

此查询将不起作用,因为第一个计数未正确使用,其次因为您只能调用一个 FROM 是给定的查询。看起来您希望返回多个不相关的值。如果是这种情况,那么您可以为您需要的所有内容创建多个 SELECT 查询。

查询中的内联数学也是完全可能的,您几乎可以内联做任何事情。这是您可以做的一些基本数学的资源:http: //www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php

于 2012-10-08T23:02:28.113 回答