Php 如何在1个提交按钮上执行2个操作
我有一个带有提交按钮的表单。单击submit按钮时,它会将信息发送到mysql。这是所有的工作,但当它提交按钮被点击它只是重新加载页面。我希望它去发送信息到mysql,然后去页面thankyou.html 我的提交按钮是:Php 如何在1个提交按钮上执行2个操作,php,javascript,forms,onsubmit,Php,Javascript,Forms,Onsubmit,我有一个带有提交按钮的表单。单击submit按钮时,它会将信息发送到mysql。这是所有的工作,但当它提交按钮被点击它只是重新加载页面。我希望它去发送信息到mysql,然后去页面thankyou.html 我的提交按钮是: <input type="submit" name="submit" id="submit" value="Submit" /> 我的行动形式是: <form name="list"; action="<?php echo $_SERVER['
<input type="submit" name="submit" id="submit" value="Submit" />
我的行动形式是:
<form name="list"; action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
此php代码将使您跳转到另一个页面:
<?php
if ($_POST) { // check something is being sent by the form
// MySQL stuff here...
header("location:thankyou.html");
exit;
}
?>
// put the form here
//把表格放在这里
或者,您可以将向数据库插入数据的php放在thankyou.html的顶部,并将表单提交到那里
就个人而言,我喜欢将插入内容与表单保持在同一页上,但这只是个人的选择
重要信息:在调用php重定向之前,页面上不能有任何输出,甚至不能有空格,因此请确保将打开的php标记放在文件的顶部,不要打印或回显任何内容。此php代码将使您跳转到另一个页面:
<?php
if ($_POST) { // check something is being sent by the form
// MySQL stuff here...
header("location:thankyou.html");
exit;
}
?>
// put the form here
//把表格放在这里
或者,您可以将向数据库插入数据的php放在thankyou.html的顶部,并将表单提交到那里
就个人而言,我喜欢将插入内容与表单保持在同一页上,但这只是个人的选择
重要信息:在调用php重定向之前,页面不能有任何输出,甚至不能有空白,因此,请确保将开始的php标记放在文件的顶部,不要打印或回显任何内容。我建议将操作放在thankyou.php页面上,并使用post将mysql插入代码放在该页面上
<form name="list" action="thankyou.php" method="post">
此外,如果希望所有内容都在同一页上,可以使用
<form name="list" action="<?php echo $_SERVER['PHP_SELF']; ?>?submit=1" method="post" >
我建议将操作放在thankyou.php页面上,并使用post将mysql插入代码放在该页面上
<form name="list" action="thankyou.php" method="post">
此外,如果希望所有内容都在同一页上,可以使用
<form name="list" action="<?php echo $_SERVER['PHP_SELF']; ?>?submit=1" method="post" >
始终可以使用JS
<? if(!empty($_POST['submit']){
//do mysql stuff here
?>
<script type="text/javascript">
<!--
window.location = "thankyou.html "
//-->
</script><?
}?>
始终可以使用JS
<? if(!empty($_POST['submit']){
//do mysql stuff here
?>
<script type="text/javascript">
<!--
window.location = "thankyou.html "
//-->
</script><?
}?>
由于您将表单提交到同一页面,服务器将(在处理该页面上的任何PHP代码后)显示该页面。您在这里有几个选项:
将表单提交到其他页面
处理表单后从页面重定向
第一个选项意味着您要将表单
中的操作
更改为如下内容:
<form name="list" action="formhandler.php" method="post">
header("Location: thankyou.php");
这本质上应该是PHP代码在处理表单之后做的最后一件事。也就是说,您可能不希望您的服务器端代码在直观上是终止情况之后继续执行。因此,您需要在它之后立即调用exit
,以停止页面执行。(请记住,实际的重定向不是服务器端操作,服务器只是将位置
头发送到浏览器,并告诉浏览器它应该执行重定向。)
(另外,正如在这里的其他答案中所指出的,在执行这种重定向时,页面应该没有输出。)
此外,我想您的PHP页面上也可以有条件输出,如果它不处理帖子,则显示一组HTML内容(表单),如果它处理帖子,则显示另一组内容(感谢页面),但这对我来说就像是一个滑梯。分离服务器端资源比使用一个有条件地执行不同操作的命名资源(somepage.php)更好。(单一责任原则)由于您将表单提交到同一页面,服务器将(在处理该页面上的任何PHP代码后)显示该页面。您在这里有几个选项:
将表单提交到其他页面
处理表单后从页面重定向
第一个选项意味着您要将表单
中的操作
更改为如下内容:
<form name="list" action="formhandler.php" method="post">
header("Location: thankyou.php");
这本质上应该是PHP代码在处理表单之后做的最后一件事。也就是说,您可能不希望您的服务器端代码在直观上是终止情况之后继续执行。因此,您需要在它之后立即调用exit
,以停止页面执行。(请记住,实际的重定向不是服务器端操作,服务器只是将位置
头发送到浏览器,并告诉浏览器它应该执行重定向。)
(另外,正如在这里的其他答案中所指出的,在执行这种重定向时,页面应该没有输出。)
此外,我想您的PHP页面上也可以有条件输出,如果它不处理帖子,则显示一组HTML内容(表单),如果它处理帖子,则显示另一组内容(感谢页面),但这对我来说就像是一个滑梯。分离服务器端资源比使用一个有条件地执行不同操作的命名资源(somepage.php)更好。(单一责任原则)我真的认为这太过分了(或者可能我误解了这个问题……)头应该在mysql
操作之后和任何输出之前使用。假设当前文件处理mysql操作。@JMax:真的吗?正如我所说的,我喜欢将插入代码保持在与表单本身调用相同的页面上,因此我经常使用头重定向(如果我不使用模板的话)。我想服务器的开销会稍微多一些,因为它加载了两个文件,但我相当肯定OP并没有在高流量站点上实现;-)嗯,它不起作用。基本上我需要submit按钮将infor发送到mysql(我已经完成并正在工作),但是在这之后,请转到thankyou.htmlMysql插入代码之后再输入上面的代码应该可以正常工作。你有错误吗?我真的认为这是过分的(或者我误解了这个问题…)<