在javascript中使用php post到数据库处理动态生成的表单

时间:2012-10-05 18:20:48

标签: php javascript

我有一个包含动态生成字段的表单。提交的表单中可以有任意数量的字段,具体取决于用户添加的字段数。这是一个JSFIDDLE,你可以参考我知道我动态生成什么样的字段。 LINK TO JSFIDDLE

这个JSFIDDLE和我的项目的唯一区别是,不是在一个集合中生成2个下拉列表和2个输入字段,而是在一个集合中生成3个下拉列表和1个输入字段。现在,用户可以从jsfiddle的下拉列表中选择,最多可以生成15个集合。

需要知道的是,如果用户生成了7个集合,我怎么知道每个字段的名称,因为我必须使用PHP来处理此表单的数据并提交到数据库。

2 个答案:

答案 0 :(得分:3)

看看this。它在每个输入的末尾添加一个变量,因此您可以跟踪输入。

编辑1:名称将如此,

row1 - input1_1,input2_1,input3_1,input4_1

row2 - input1_2,input2_2,input3_2,input4_2 ......等等

Edit2:jsfiddle会删除最新添加的行。

答案 1 :(得分:3)

您的jQuery代码已经明确命名字段。例如:

$("<input>").attr("name", "a").appendTo(newDiv);

这将创建一个名为a的输入:

<input name="a" />

您的jQuery为每个动态创建的输入提供相同的名称。如果您提交以下表单,其中3个字段具有相同的名称,则服务器将收到a=value1&a=value2&a=value3

<form>
    <input name="a" value="value1" />
    <input name="a" value="value2" />
    <input name="a" value="value3" />
    <input type="submit" />
</form>

这适用于大多数服务器技术,但不适用于PHP。 PHP使用最后一个值覆盖现有值。因此,如果您在PHP中检查a的值,则只能看到value3。但是,好消息是您可以稍微更改输入名称并让PHP识别所有值。在PHP中,当您在输入名称后附加方括号(name="a"变为name="a[]")时,PHP会将值解析为数组。因此,对于以下略微修改的形式:

<form>
    <input name="a[]" value="value1" />
    <input name="a[]" value="value2" />
    <input name="a[]" value="value3" />
    <input type="submit" />
</form>

当您查看PHP中a的值时,您将获得包含value1value2value3的值数组。因此,只需将jQuery代码更改为在名称末尾使用方括号:

$("<input>").attr("name", "a[]").appendTo(newDiv);