5

我需要你的帮助来解决一个问题。我的主页上有两个表格,我希望用户在不同时间填写和提交。我的问题是我希望他们两个都只有一个处理页面。通常我可以在单独的页面中执行此操作。但我想知道是否可以在同一页面上进行操作。

好的.. 如果我在操作页面上提交表单 A,不会有未提交的表单 B 变量的未定义索引,当然不建议使用 GET。

感谢您的时间和耐心。

4

3 回答 3

10

这样做并非完全闻所未闻。很多时候,在表单元素的 action 属性中传递了一个不同的参数,比如/submit.php?action=registeror /submit.php?action=activate

所以,你有这样的代码:

if ($_GET['action'] == 'register') {
  // Register user
} else if($_GET['action'] == 'activate' {
  // Activate user
}

但是,您也可以只更改提交按钮的值,并使两种表单的 action 属性相同:

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}
于 2012-05-05T05:15:53.160 回答
4

创建单独的 form_process 脚本,然后包含在表单页面中。

if(!empty($_POST)){
 include 'form_process.php';
}

form_process.php 应该只包含没有回显或打印的类/函数。

或者,您可以将操作 url 设置为同一页面,然后重定向回正确的页面。

<form id="add-profile-form" action="form_controller.php" method="post">
    <input type="hidden" name="act" value="adding"/>
    <!-- form 1. -->
</form> 

<form id="edit-profile-form" action="form_controller.php">
    <input type="hidden" name="act" value="editing"/>
    <!-- form 2. -->
</form>

form_controller.php

if(isset($_POST['act']){
    if($_POST['act'] == 'adding'){
        //process form1
    }else if($_POST['act'] == 'editing'){
        //process form2
    }

    header("Location: success.php");
}
于 2012-05-05T05:36:16.553 回答
1

您也可以在同一页面上执行此操作。只是你需要action为这两种形式做同样的事情。

您需要根据源表单创建一些条件并为和编写单独的功能Form AForm B

您可以检查@Ami 使用的参数。

/submit.php?action=register或者/submit.php?action=activate

所以,你有这样的代码:

if ($_GET['action'] == 'register') {
  // Register user
} else if($_GET['action'] == 'activate' {
  // Activate user
}

但是,您也可以只更改提交按钮的值,并使两种表单的操作参数相同:

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}
于 2012-05-05T05:04:39.290 回答