0

我需要创建一个系统来打印有关数据库中项目的信息。到目前为止,我有一个带有多个输入字段(类型 = 文本和单选)的 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>

问题:

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

是否可以将 action.php 文件中的 echo 函数引用到分配了 id 的 div 以一次发布整个信息?否则,如何一次将所有重复表单的信息发送(发布)到新页面?

这必须是一个客户端进程,所以它背后没有更多的东西,php 只是用于将信息回显到新页面。因此,如果有可以用 javascript 或 jQuery 完成的解决方案也可以。

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

提前感谢大家。

4

1 回答 1

0

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

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

于 2013-10-26T01:36:44.907 回答