从交叉行和列的数据库中选择一个价格

时间:2014-03-05 11:20:20

标签: php html mysql database

首先,我是PHP编程的新手。

为了开发网上商店(窗帘),我正在尝试创建一个价格计算表单,客户必须指定窗口的高度和宽度。表单必须从数据库中选择合适的价格。

这是示例数据库的样子:

enter image description here

当客户选择高度(第1列)和宽度(第1行)时,脚本必须查找两者相交的价格(在此示例中为90)。

enter image description here

不幸的是,我找不到任何有关此主题的教程,参考资料或其他内容。

有人可以通过向我提供教程,代码或任何有用的链接来帮助我吗?

提前致谢!

2 个答案:

答案 0 :(得分:7)

查询应如下所示:

$width = "20";
$height = 30;

query("SELECT `" . quote($width) . "` FROM table WHERE Hoogte = " . quote($height));

queryquote是您用于查询数据库和转义数据的mysql方法。

如果Hoogte是一个字符串,则必须改变查询,如下所示:

query("SELECT `" . quote($width) . "` FROM table WHERE Hoogte = '" . quote($height) . "'");

修改

此查询将返回您需要的内容,但您绝对应该花时间优化表格。看看规范化。

可能的表格如下:

price
-------
id
value
height
width

然后您的查询将如下所示:

query("SELECT value FROM price WHERE height = " . quote($height) . " AND width = " . quote($width));

使用此功能,您可以添加新的高度和宽度值,而无需更改表格!

答案 1 :(得分:-1)

嗯,我想你可能因为这个原因而有两个单独的表。

但目前我可能会提出以下建议:

首先,让我们得到所需的尺寸。这意味着表中的第一个尺寸是“10”。因此,我们在列'10'中搜索值'30':

$q = mysql_query("SELECT * FROM tbl_name WHERE 10 = '30';");

完成后,我们需要从该行获取结果。我们不需要任何其他列的数字而不是'60',对吗?所以,我们试图从列'60'得到一个结果,如下所示:

$res = mysql_fetch_array($q);
$resultForColumn = $res['60'];

我猜用户可能会选择60以外的其他内容,因此您可以随时更改它:

$i = $_POST['UserChosedSize']; // Do not forget to sanitize it, if you have something like this;
$resultForColumn = $res[$i];

希望这有帮助。

UPD:也许Tobias Kun先生写得对,他的榜样更快更容易。