PHP 后期过滤和数学

标签 php mysql

首先,我对 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

这是我迷路的地方 - 我可以像以前一样通过将后值分配给大量字符串和变量来单独进行数学运算,但我肯定我在我的代码中缺少一种更简单的方法缺乏理解。

在此提前感谢阅读我的求助小说的任何人。

最佳答案

我认为你正在做这样的事情:

  1. 从数据库中获取所有数据
  2. 分配给数组
  3. 获取$_POST数据
  4. 将 $_POST 数据与获取的数组进行匹配

更标准的做法是获取 $_POST 信息并使用此信息查询数据库(确保在查询中运行数据之前过滤数据以防止注入(inject))。

因此,如果用户说他销售 50 件产品 1 和 20 件产品 2,这些数字可用于数据库查询,因此您只返回您实际需要的数据。

这意味着您不需要在代码中进行匹配或数学运算;如果我正确理解你的问题,它真的应该在 SQL 中完成。

如果我没有正确理解您的问题,请随时发表评论。

关于PHP 后期过滤和数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359229/

相关文章:

mysql - 将帖子从一个博客复制到另一个博客后出现 W3C RSS 错误

mysql - 有什么优雅的解决方案可以确保插入仅限于 MySQL 分层树中的根所有权?

mysql - 子查询在更新集子句中返回超过 1 个值

mysql - 将两个查询与计数函数合并为一个结果集

php - 一个 PHP 循环问题

php - 在 laravel 5 中将一个表复制到另一个表

javascript - 使用 AJAX 从 URL 加载 XML 时如何修复 "Access Control Allow Origin"错误?

php - 使用php在azure文件存储(不是BLOB存储)中上传的正确方法是什么

php - 在数组中使用 unset() 函数删除元素

javascript - 动态字段的可靠下拉菜单