我如何在数组中存储表单值?

时间:2014-08-28 17:07:59

标签: php arrays forms

我如何才能从表单中将数据附加到数组?

根据数据库中找到的数据生成列表。每行都有一个部件号和一个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;
        }
    }

希望这可以帮助其他人处理类似的问题。

2 个答案:

答案 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);