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

Posted

技术标签:

【中文标题】从交叉点行和列的数据库中选择价格【英文标题】:Pick a price from database on intersection row and column 【发布时间】:2014-04-07 10:07:02 【问题描述】:

首先,我是 php 编程新手。

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

这是示例数据库的外观图片:

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

很遗憾,我找不到任何关于这个主题的教程、参考资料或任何东西。

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

提前致谢!

【问题讨论】:

这是一张电子表格的图片。数据库表不是电子表格!第一步是阅读规范化! 如果一个窗口有 25x25 怎么办 :) 凯文看看我的编辑。你应该像@Strawberry 建议的那样改变你的表结构。 【参考方案1】:

查询应该如下所示:

$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));

有了这个,您无需更改表格即可添加新的高度和宽度值!

【讨论】:

@Strawberry: 对不起:( 感谢您的快速回复。我已经按照您在评论中建议的那样更改了表格,并且效果很好。下一个问题是,如果客户输入 25x25(如 DanFromGermany 的评论)怎么办?显示的应该是 20x20.. @KevinHamer:太好了!如果有效,请考虑将答案标记为正确答案。 抱歉,我按下回车键有点太快了;) @KevinHamer:只需添加一个值为20,20,宽高为25的新行?【参考方案2】:

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

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

首先,让我们获得所需的尺寸。这意味着表中的第一个尺寸是“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 先生可能写得对,他的例子更快更容易。

【讨论】:

以上是关于从交叉点行和列的数据库中选择价格的主要内容,如果未能解决你的问题,请参考以下文章

实验8-SPSS交叉表分析

从 SQL 数据库中选择特定的行和列

请问如何获得GridView选中行的每一列的信息?

使用 Python pyqt4 获取 QTableWidget 中特定行和列的单元格突出显示

pandas使用iloc函数基于行列索引获取dataframe指定行和指定列交叉格子的数据内容loc函数基于行索引和列名称获取dataframe指定行和指定列交叉格子的数据内容

具有多个固定行和列的 HTML 表格