不使用Javascript将同一表单提交到多个位置

时间:2012-05-24 12:08:39

标签: php html

看了各种类似的问题,无论是在SO还是其他地方,我都有一种可怕的感觉,我想要做的事情是不可能的,但是这里也是如此。

我有一个页面,它是一个文本输入行的表。用户输入每行的信息,并将数据提交到单独的文件,该文件创建PDF。

问题在于我需要用户能够随意向表中添加行,因为数据量可能会有所不同。

[在你去那里之前,我需要指出我不能使用Javascript来实现这一点 - 我知道在JS中很容易做到但是页面需要可以访问。] < / p>

这是一个非常简化的版本,我只是拼凑到一起(希望)说明这一点:

<?php 
  if (filter_has_var(INPUT_POST, 'add_rows')) {
    $howmanyrows = filter_input(INPUT_POST, 'howmanyrows', FILTER_SANITIZE_NUMBER_INT);
    //get all the data from table and put it in an array, 
    //then add 5 (or however many) new rows to said array.
  }
  else if (filter_has_var(INPUT_POST, 'send_data')) {
    //get table data, add to session and redirect to other page with a header()
  }
 ?>
<html>
  <form action="" method="POST">
    <table>
      <?php //table rows added using an array of data 
        foreach ($data as $d): ?>
          <tr><td><input type="text" value="<?php echo $d; ?>"></td></tr>
      <?php endforeach; ?>

    </table>
    <input type="text" name="howmanyrows" value="5">
    <input type="submit" name="add_rows">

    <input type="submit" name="send_data">

  </form>
...
</html>

正如您所看到的,目前我有一个笨重的设置,其中只有一个表单包含整个页面,并将页面提交给自己。根据单击的按钮,添加新行或将数据提交到PDF创建页面。

由于种种原因,这并不理想。我真正想要做的是有两个单独的形式,或嵌套的形式。但前者不允许将输入值提交给两者,而后者显然是不良形式(没有双关语意)但不起作用。

是否可以按照我的意愿去做?有什么建议以不同的方式去做吗?

1 个答案:

答案 0 :(得分:0)

我认为你拥有最好的非JavaScript解决方案 - 肯定是我用它运行的方式。

使一件事变得更容易的一件事是你可以使用同名的多个输入:

<input name="tablerow[]" type="text" value="A" />
<input name="tablerow[]" type="text" value="B" />
<input name="tablerow[]" type="text" value="C" />

这些作为一个数组来自$ _POST ['tablerow']。数组的长度是字段数。然后添加其他字段。


对于辅助功能,您应该在顶部添加一个链接,允许用户直接跳到第一个“新”字段 - 否则他们需要选中整个表单才能进入新字段。 (请参阅上面的评论,关于JS是否真的不可避免,他们可以避免这种情况!)