Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在1个提交按钮上执行2个操作_Php_Javascript_Forms_Onsubmit - Fatal编程技术网

Php 如何在1个提交按钮上执行2个操作

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['

我有一个带有提交按钮的表单。单击submit按钮时,它会将信息发送到mysql。这是所有的工作,但当它提交按钮被点击它只是重新加载页面。我希望它去发送信息到mysql,然后去页面thankyou.html

我的提交按钮是:

<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插入代码之后再输入上面的代码应该可以正常工作。你有错误吗?我真的认为这是过分的(或者我误解了这个问题…)<