我需要你的帮助解决问题。 我的主页上有两个表单,我希望用户在不同的时间填写和提交。我的问题是,我希望它们只有一个处理页面。通常我可以在单独的页面中执行此操作。但我想知道是否可以在同一页面上进行。
好的..如果我提交表格A,在行动页面上,不会有表格B变量的未定义索引,尚未提交,并且不建议使用GET。
感谢您的时间和耐心。
答案 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 A
和Form 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
}
}