提取动态创建的表单数据

时间:2011-09-13 13:09:54

标签: php jquery

我刚开始使用jQuery。我一直在使用的一件事是将行添加到表格中的表格。

当我添加新行时,我会给出所有表单元素名称,例如'name_' + rowNumber。每次添加一行时,我都会增加rowNumber

我通常还有一个删除行按钮。即使删除了一行,rowNumber计数也保持不变,以防止重复元素名称。

提交表单时,我将隐藏元素设置为等于jQuery中的rowNumber值。然后在PHP中,我从1计算到rowNumber值。然后,对于每个值,我执行isset($_REQUEST['name'_ . index])。这就是我如何提取在jQuery中删除行之后剩余的表单元素。

这里有没有人有更好的技术来计算已删除的行?

6 个答案:

答案 0 :(得分:3)

对于我们的一些较简单的表,我们使用字段名称,例如'name []',但对于JavaScript,它们需要一个可用的id。

它确实增加了一些复杂性'name [0]'必须假设'detail [0]'是正确的元素。

如果字段名称以[]类似于

结尾,PHP将创建一个数组并追加元素
<input name="field[]" value="first value" />
<input name="field[]" value="second value" />

// is roughly the same as

$_POST['field'][] = 'first value';
$_POST['field'][] = 'second value';

答案 1 :(得分:2)

使用数组来保存提交中的值。因此,请在客户端对行计数进行分区,并将新元素命名为name[]。这意味着$_POST['name']将是一个数组。

在服务器端,您可以通过以下方式轻松获取行数(如果需要):

$rowcount = count($_POST['name']);

...你可以像这样循环遍历服务器端的行:

for ($i = 0; isset($_POST['name'][$i]; $i++) {}

答案 2 :(得分:1)

您可以通过foreach($ _ POST作为$ key =&gt; $ value)提取所有行。

答案 3 :(得分:1)

添加动态表单元素时,请使用数组命名方法。例如

<input type="text" name="textfield[]" />

当表单发布时,textfield[]将是一个PHP数组,您可以轻松地使用它。 删除元素时,请确保将其从HTML DOM中删除。

答案 4 :(得分:0)

就像blejzz建议的那样,我认为如果你使用$ _GET,那么你可以循环遍历所有已发送的输入,忽略已删除的行。

foreach ($_GET as $k=>$v) {
      echo "KEY: ".$k."; VALUE: ".$v."<BR>";
}

我注意到你提到“会计已删除的行”;您可以包含隐藏的输入,并在每次有人删除行时为其添加唯一值。例如,输入可以包含行号的逗号分隔值:

<input type="hidden" value="3,5,8" id="deletions" />

并包含在您的jQuery脚本中:

$('.delete').click(function(){
      var num = //whatever your method for getting the row number
      var v = $('#deletions').val();
      v = v.split(',');
      v.push(num);
      v = v.join(',');
      $('#deletions').val(v);
});

然后您应该能够知道删除了哪些行(如果这是您要查找的内容)。

答案 5 :(得分:0)

您可以使用POST或GET

提交后,您可以自动使用所有表单元素。您不需要重新组织表单元素名称。即使你不需要知道表单元素名称。

<form method="POST" id="fr" name="fr">.....</form>

<?php
if(isset($_POST['fr'])){  
     foreach($_POST as $data){
          echo $data;
     }
}
?>

你也应该看看这个 grafanimasyon.blogspot.com.tr/2015/02/veritabanndan-php-form-olusturucu.html

这是一个自动化表单创建程序,用于处理数据库表。您可以看到如何为表单元素命名并使用它们。