多个表单和一个处理页面

时间:2012-05-05 05:03:11

标签: php mysql forms

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

好的..如果我提交表格A,在行动页面上,不会有表格B变量的未定义索引,尚未提交,并且不建议使用GET。

感谢您的时间和耐心。

3 个答案:

答案 0 :(得分:9)

这样做并不是闻所未闻。通常,在表单元素的操作属性中传递不同的参数,如/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
  }
}

答案 1 :(得分:3)

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

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

form_process.php应该只包含没有echo或print out的类/函数。

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

<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");
}

答案 2 :(得分:0)

您也可以在同一页面上进行操作。只需要为两个表单设置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
}

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

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}