1

我正在尝试获取输入表单的数据,并使用帖子在同一页面上对其进行处理,这将获取所有数据并将其插入到数据库中的表中。这是一个存在于我试图转换为 php 的 .asp 页面上的表单。该表单用于输入商店的缺货数量。

每行如下所示:

Number |        Department         | Insp Type | Qty | Memo
______________________________________________________________
1      | Bakery And Deli (OOS)     |    OOS    | 1   | george
2      | Produce                   |    OOS    | 6   | apples

等等....

有约 24 个部门的行。如果将新行添加到数据库中,则表单会动态更新并显示新行。唯一的用户输入数据是数量和备注。其他的由表单前面的 sql 查询预先填充。使用我拥有的当前代码,当我回显我的 $sqli (插入查询)时,这就是我得到的:

我还想返回一个计数,如果“项目”输入到表单上的“数量”字段中,则为总金额。

任何帮助将不胜感激。在过去的几天里,我一直在试图弄清楚如何做到这一点。我一直在左右搜索谷歌试图弄清楚这一点,但我完全被难住了。预先感谢您的帮助。

4

1 回答 1

3

那是因为您在 foreach 循环中创建了 SQL 语句。

我还建议使用输入数组(比如$_POST['txtStoreID'][0]等等......)来让事情变得更容易。

在您的情况下,我假设您的$_POST-array 中的字段命名如下txtStoreID_1

// First, create array for all results
$res_arr = array();

// Load array with all results
foreach ($_POST as $key=>$value) {
    $tmp_name = explode('_',$key,2);
    $pri_key = $tmp_name[1]; // number
    $sec_key = $tmp_name[0]; // name
    if (!is_array($res_arr[$pri_key])) {
        $res_arr[$pri_key] = array();
    }
    // This creates for example: $res_arr['1']['txtStoreID'] containing 'Store_31'
    $res_arr[$pri_key][$sec_key] = $value;
}

// Next, create insert statements
foreach ($res_arr as $data) { // Now you get $data['txtStoreID'] etc.
    $sqli  = "INSERT INTO Inspection_tbl (Store_ID, Dept_ID, Quantity, Memo, User_ID, Date_Time) ";
    $sqli .= "Values ('".$data['txtStoreID']."', ";
    $sqli .= "'".$data['txtDeptID']."', ";
    $sqli .= "'".$data['txtQuantity']."', ";
    $sqli .= "'".$data['txtMemo']."', ";
    $sqli .= "'".$data['txtUserID']."', ";
    $sqli .= "'now()')";
    echo $sqli; // Check query
}

请注意,这只是关于您的输入字段的计算猜测。

编辑:

除了is_array()我所做的更改之外,我的猜测是您需要 DeptID,而不是部门的文本值。

所以,代码的底部应该是:

// Next, create insert statements
foreach ($res_arr as $deptID=>$data) { // Now you get $data['txtStoreID'] etc.
    $sqli  = "INSERT INTO Inspection_tbl (Store_ID, Dept_ID, Quantity, Memo, User_ID, Date_Time) ";
    $sqli .= "Values ('".$data['txtStoreID']."', ";
    $sqli .= "'".$deptID."', ";
    $sqli .= "'".$data['txtQuantity']."', ";
    $sqli .= "'".$data['txtMemo']."', ";
    $sqli .= "'".$data['txtUserID']."', ";
    $sqli .= "'now()')";
    echo $sqli; // Check query
}
于 2013-08-31T20:57:16.040 回答