将几个重复的表单发布到新页面,其中包含不同的信息

时间:2013-10-25 23:38:35

标签: javascript php jquery html forms

我需要创建一个系统来打印有关数据库中项目的信息。到目前为止,我有一个带有几个输入字段(类型=文本和广播)的html表单,因此我可以收集项目的所有信息。

为了让这个过程更快,我引入了一个javascript来复制整个空表单'n'次,点击一下,这样就可以一次打印多个项目信息。我的脚本看起来像这样:

<body>
  <button id="button" onclick="duplicate()">add form</button><!--this button duplicates the empty form-->

  <form action="action.php" method="post" name="formulario">

  <div id="duplicater">
<p>Código:<input type="text" name="codigo" /></p>
    <p>Nombre del proyecto:<input type="text" name="proyecto" /></p>

  <p>
    <span>
      <input type="radio" name="grupo1" value="SD" />SD
      <input type="radio" name="grupo1" value="HD" />HD
    </span> 
    <span>
      <input type="radio" name="grupo2" value="4:3"/>4:3 
      <input type="radio" name="grupo2" value="16:9"/>16:9
    </span>
  </p>
  <p>Fecha:<input type="text" name="fecha" /></p>
  <p>Lugar:<input type="text" name="lugar" /></p>
  <p>Dueño:<input type="text" name="dueno" /></p>
</div>
<p><input type="submit" name="submit" value="enviar" /></p>
</form>

<script>
document.getElementById('button').onclick = duplicate;
var i = 0;
var original = document.getElementById('duplicater');
function duplicate() {
    var clone = original.cloneNode(true); // "deep" clone
    clone.id = "duplicator" + ++i; // there can only be one element with an ID
    original.parentNode.appendChild(clone);
}
</script>
</body>

此时,项目的这一部分工作正常,但我遇到了action.php文件的问题,该文件处理将所有表单中的信息发送到新页面进行打印的功能。

action.php使用每个输入的name属性收集表单的信息。由于每个表单只是原始表单的副本,因此每个新表单都具有相同的名称属性,因此当我单击发送按钮时,php只会回显最后一个表单的信息。

<div><span>Código: </span><?php echo htmlspecialchars($_POST['codigo']); ?></div>
<div><span>Proyecto: </span><?php echo htmlspecialchars($_POST['proyecto']); ?></div> 
<div><span>Calidad: </span><?php echo htmlspecialchars($_POST['grupo1']); ?></div>
<div><span>Formato: </span><?php echo htmlspecialchars($_POST['grupo2']); ?></div>
<div><span>Fecha: </span><?php echo htmlspecialchars($_POST['fecha']); ?></div>
<div><span>Lugar: </span><?php echo htmlspecialchars($_POST['lugar']); ?></div>
<div><span>Dueño: </span><?php echo htmlspecialchars($_POST['dueno']); ?></div>

问题:

我需要在每个重复的表单中更新(重命名)输入标记的name属性,我该怎么做?

可以将action.php文件中的echo函数引用到指定了id的div,以便立即发布整个信息吗?否则,我如何一次性将所有重复表格的信息发送(发布)到新页面?

这必须是一个客户端进程,所以没有更多的东西,php只是为了回显新页面的信息。所以,如果有解决方案可以使用javascript或jQuery也可以。

我留下了演示http://www.programaicat.una.ac.cr/ICATsite/demo/

的链接

提前感谢所有人。

1 个答案:

答案 0 :(得分:0)

POST vars被发送到脚本的方式,它们被命名为数组中的键值对。任何具有相同名称的输入都将被覆盖。

我建议在创建每个附加输入时附加或添加一个数字,因此它将被称为“name.1”或“1.name”,而不是名为“name”的新输入。您的第一个输入将是“name.0”,其余的将在添加时向上递增。处理信息时,可以使用substr遍历POST数组键,并根据需要重新设置信息,然后再将其保存到数据库中。