处理动态表单内容有什么更好的做法?

时间:2010-08-02 18:09:08

标签: php

我设计了一个包含动态内容的表单。

例如, 表单包含Paper_Name的文本字段和Paper_Link的文本字段。 用户最多可以添加10个纸质名称和纸质链接。

每个纸质名称和纸张链接的ID如下:

papername01,paperlink01,...,papername10,paperlink10。

这些ID是由JavaScript动态创建的。换句话说,如果用户没有单击“添加纸张”按钮并提交表单,则服务器将接收的唯一字段是paperlink01和papername01。

现在,问题是设计服务器PHP脚本以处理这些提交的表单内容的更好的做法。

  1. 使用Ajax表单插件?

  2. 使用常规表单提交并迭代所有变量并查看是否设置了任何变量?

  3. 使用JSON数据格式?

  4. 是的,问题与服务器和客户端有关。我想知道最佳做法并相应地更改我的客户。 请帮忙,谢谢

    表单设计如下所示:

    <div id="divDummy001">
     <div id="paperTitle001Fld">
      <label for="papertitle001">Title of Paper 001</label>
      <div>
       <input type="text" size="16" value="" id="papertitle001" name="papertitle001"/>
      </div>
     </div>
    
     <div id="paperURL001Fld">
      <label for="paperurl001">Paper Link 001</label>
      <div>
       <input type="text" size="96" value="" id="paperurl001" name="paperurl001"/>
       </div>
     </div>
    </div>
    

    当用户点击“添加”按钮时,将创建一个新的div,唯一的区别是ID将增加1。

3 个答案:

答案 0 :(得分:5)

为什么不发布数组

做一个vanilla表单提交,然后在服务器端,你可以像任何其他PHP数组一样遍历POST ed数组。

您需要做的就是定义HTML元素“name属性并附加[]

<input type="text" name="papername[]" value=""/>

你的PHP应该是这样的:

<?php
    if(isset($_POST['papername'])) {
        foreach($_POST['papername'] as $papername) {
           //do something with $papername...
        }
    }
?>

答案 1 :(得分:4)

使用数组。创建名称为papername[1], papername[2]的文本字段,然后它们将在PHP脚本中显示为数组。

答案 2 :(得分:3)

您可以使用[]将JS命名为元素。有关如何正常完成的说明,请参阅http://www.spsu.edu/cs/faculty/bbrown/papers/php2.html

<form method="post">
I speak the following languages:
<input type="checkbox" name="lang[ ]" value="en">English<br />
<input type="checkbox" name="lang[ ]" value="fr">Français<br />
<input type="checkbox" name="lang[ ]" value="es">Español<br />
</form>

在接收代码中:

<?php
$langs = $_POST['lang'];
// Note that $snacks will be an array.
foreach ($langs as $lang) {
  echo "$lang<br />";
}
?>

您也可以使用<input type="text" name="papername[]">多次命名文本输入。然后,您可以将名称作为数组处理。

请注意:ID必须是唯一的,名称不必。你应该得到像

这样的HTML
<input type="text" id="papername01" name="papername[]">
<input type="text" id="papername02" name="papername[]">
[etc]