从交叉点行和列的数据库中选择价格
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));
query
和 quote
是您用于查询数据库和转义数据的 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 先生可能写得对,他的例子更快更容易。
【讨论】:
以上是关于从交叉点行和列的数据库中选择价格的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python pyqt4 获取 QTableWidget 中特定行和列的单元格突出显示
pandas使用iloc函数基于行列索引获取dataframe指定行和指定列交叉格子的数据内容loc函数基于行索引和列名称获取dataframe指定行和指定列交叉格子的数据内容