首先,我对 PHP(和一般编程)还很陌生,我正尝试在业余时间通过使用一些使用 php 和 mysql 的自定义工具开发游戏网站来自学它。因此,请在阅读时牢记这一点。
我需要的是指向正确方向的一点(或对什么做什么的一些解释),以学习如何正确编写函数代码,以便在用户将数据发送到 POST 后为我在表单上做一些数学运算.
这是背景信息:
在数据库中,我有一个“原 Material ”表,可以将其转换为不同数量的 8 种不同“产品”。然后还有另一个表格,其中包含这 8 种产品及其价格。
我设置了一个表单,它通过对原始项目名称的简单查询自动生成我的选择框(SelectList1 到 11):
<td>
<div align="center">
<select name="SelectList1">
<option value=0></option>
<option value=1>Raw Item 1</option>
<option value=2>Raw Item 2</option>
...
<option value=47>Raw Item 47</option> //Yes, there is a lot
</div>
</td>
选择框旁边是这个文本输入框,人们可以用它来输入每个选定“原 Material ”的数量。 name=productNum1 到 11
<td>
<input type="text" size="15" maxlength="10" name="productNum1" id="productNum1">
</td>
用户表单到此结束 - 他们选择原始商品,然后输入他们要销售的数量。
现在提交时,我有另一段冗长的代码进入数据库并获取产品价格表和“原 Material ”表的所需数组及其所有各种数据。
获取的价格数组布局:
$pDA = Array (
[product1] => Array (
[id] => 1
[productname] => Product1
[price] => 599 //whole number used to avoid float precision issues
)
.....
[product8] => Array ( //repeat above values
获取的原 Material 数组:
$oDA = Array (
[material1] => Array (
[id] => 1
[materialname] => Material1
[batch] => 100 //Number needed to process
[product1] => 0 //changes based on material
[product2] => 0 //changes based on material
[product3] => 0 //changes based on material
[product4] => 0 //changes based on material
[product5] => 0 //changes based on material
[product6] => 0 //changes based on material
[product7] => 0 //changes based on material
[product8] => 0 //changes based on material
)
..... continue all the way down to
[material47] => Array ... etc
这就是所有数据。我现在需要做的是使用 Select box post 并让它获取适当的数组数据和产品编号(如果它们大于 0)。
一旦有了这些并且它们被正确存储,就需要根据用户提交的“productNum1”值进行数学运算。
例如:
加工后Rawmaterial1有500个product1和250个product6,其余0个。 Rawmaterial1 有一批 100 用户选择 Rawmaterial1 用户为 # of Rawmaterial1 输入 1000
Fetch Array Data against Select Box
Array returns data for Rawmaterial1
(1000 submitted / 100 Batch) = 10 runs
10 runs = 5000 of product1
10 runs = 2500 of product6
5000 * product1price = value1
2500 * product2price = value2
$totalvalue = $value1 + $value2
这是我迷路的地方 - 我可以像以前一样通过将后值分配给大量字符串和变量来单独进行数学运算,但我肯定我在我的代码中缺少一种更简单的方法缺乏理解。
在此提前感谢阅读我的求助小说的任何人。
最佳答案
我认为你正在做这样的事情:
- 从数据库中获取所有数据
- 分配给数组
- 获取$_POST数据
- 将 $_POST 数据与获取的数组进行匹配
更标准的做法是获取 $_POST 信息并使用此信息查询数据库(确保在查询中运行数据之前过滤数据以防止注入(inject))。
因此,如果用户说他销售 50 件产品 1 和 20 件产品 2,这些数字可用于数据库查询,因此您只返回您实际需要的数据。
这意味着您不需要在代码中进行匹配或数学运算;如果我正确理解你的问题,它真的应该在 SQL 中完成。
如果我没有正确理解您的问题,请随时发表评论。
关于PHP 后期过滤和数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359229/