php,在同一页面上处理多个动态表单

时间:2018-09-28 04:15:19

标签: php html forms

我知道有人问过这个问题,但与我所能找到的问题不同。我正在使用来自数据库的信息在一个页面上建立一个动态的订阅列表,每个订阅都有一个“取消”按钮,该按钮使用一些表单数据来使取消发生。

以下是每个表格行上的取消按钮的示例:

<form method="post" action="">
  <?php $token = $_SESSION['token'] = md5( session_id() . time(). rand() ); ?>
  <input type="hidden" name="token" value="<?php echo $token; ?>" />
  <input type="hidden" name="sg_subscriptionID" value="<?php echo $subscriptionID; ?>" />
  <input type="hidden" name="sg_postID" value="<?php echo $post->ID; ?>" />
  <input type="submit" class="button" name="submit" value="Cancel" />
</form>

要处理表单,请在文件顶部使用<?php if(isset($_POST['submit']) {} ?>

当页面上有多个表单时,这不起作用,我怀疑是因为它无法基于输入名称“ submit”区分表单数据。

没有确定的表单要创建,所以我不能简单地拥有“ submit1”,“ submit2”。我可以使用$ count动态添加数字,但是如何在表单处理脚本中检查动态数字数组?

我感谢您提出任何可能采取更好方法的建议。我试图尽可能避免使用Ajax。

2 个答案:

答案 0 :(得分:2)

您可以在PHP中检查多种形式。

file

无论有多少表格,都可以使用上面的代码进行识别。

答案 1 :(得分:1)

您可以将html输入数组用于多种形式。

示例:- 在您的代码中:-

<form method="post" action="">
  <?php $token = $_SESSION['token'] = md5( session_id() . time(). rand() ); ?>
  <input type="hidden" name="token[<?php echo 'form_'.$i ?>]" value="<?php echo $token; ?>" />
  <input type="hidden" name="sg_subscriptionID[<?php echo 'form_'.$i ?>]" value="<?php echo $subscriptionID; ?>" />
  <input type="hidden" name="sg_postID[<?php echo 'form_'.$i ?>]" value="<?php echo $post->ID; ?>" />
  <input type="submit" class="button" name="submit[<?php echo 'form_'.$i ?>]" value="Cancel" />
</form>
<!-- $i is the key for loop -->

然后在您的php代码中:-

$submits = $_POST['submit'];
// $submits loks like ['form_1']
// Now take the first key
$key = array_keys($submits)[0];
// This is the token for the given submit button
$token = $_POST['token'][$key];