【发布时间】:2014-08-28 17:07:58
【问题描述】:
如何将数据从表单附加到数组?
根据在数据库中找到的数据生成一个列表。每行都有一个零件号和一个数量文本字段供用户编辑:
+--------+----------+
| Part # | QTY |
+--------+----------+
| 123 | [0] |
+--------+----------+
| 124 | [2] |
+--------+----------+
| 125 | [15] |
+--------+----------+
| | [Submit] |
+--------+----------+
我目前的逻辑是:
If QTY = 0 {
ignore
} else {
append values to array object and store array under "parts" session
}
我遇到的一个问题是提交表单时,它会抓取表单中的最后一部分和数量值。我需要以某种方式使表单的每一行都是唯一的,并将该表单数据输入到数组中。
我打算在用户将所有零件和数量添加到数组后,然后将数组提交到数据库中。
有更简单的方法吗?
编辑:
获取零件编号并通过表单提交数量值。
<input type="text" name="item['.$row['Part'].'][qty]" size="2" value="0"/>
所以它看起来像这样:
123 => 0, 124 => 2, 125 => 15
如果设置了表单中的值,则映射数组。我还使用了array_filter() 函数来摆脱 0 数量的零件:
function show_Names($e)
{
return "$e[qty]";
}
if(isset($_POST['item'])) {
$c = array_filter(array_map("show_Names", $_POST['item']));
}
并以这种方式将其存储在会话中。如果到目前为止没有设置任何内容,请设置一个新会话。如果设置了某些内容,则只需添加到数组中:
if(isset($_SESSION['parts'])) {
if(isset($c)) {
$_SESSION['parts']=$_SESSION['parts']+$c;
}
} else {
if(isset($c)) {
$_SESSION['parts']=$c;
}
}
希望这有助于解决类似问题的其他人。
【问题讨论】: