我如何才能从表单中将数据附加到数组?
根据数据库中找到的数据生成列表。每行都有一个部件号和一个QTY文本字段供用户编辑:
+--------+----------+
| 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
}
我遇到的一个问题是提交表单时,它会抓取表单中的最后一部分和数量值。我需要以某种方式使每一行对于表单都是唯一的,并将表单数据输入到数组中。
我计划在用户将所有部件和qtys添加到数组后,然后将数组提交到数据库中。
有更简单的方法吗?
抓取零件编号并通过表格提交数量值。
<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;
}
}
希望这可以帮助其他人处理类似的问题。
答案 0 :(得分:3)
在文本框名称属性中添加方括号,例如:
<input type="text" name="part[]" />
<input type="text" name="qty[]" />
<input type="text" name="part[]" />
<input type="text" name="qty[]" />
<input type="text" name="part[]" />
<input type="text" name="qty[]" />
然后你将拥有所有部分没有&amp;数量为$ _POST ['part']和$ _POST ['qty']
答案 1 :(得分:2)
是。通过命名字段,如:
<input type="text" name="item[0][name]" />
<input type="text" name="item[0][email]" />
<input type="text" name="item[1][name]" />
<input type="text" name="item[1][email]" />
<input type="text" name="item[2][name]" />
<input type="text" name="item[2][email]" />
和PHP脚本:
function show_Names($e)
{
return "The name is $e[name] and email is $e[email], thank you";
}
$c = array_map("show_Names", $_POST['item']);
print_r($c);