web-dev-qa-db-ja.com

PHPフォーム-送信時に同じページにとどまる

Contact.htmlにあるphpフォームがあります

フォームはprocessForm.phpから処理されます

ユーザーがフォームに記入して送信をクリックすると、processForm.phpが電子メールを送信し、そのページに「Success!your message has been sent。」というメッセージを含むprocessForm.phpを送信します。

私はPHPについてあまり知りませんが、これを要求しているアクションは次のとおりです。

// Die with a success message
die("<span class='success'>Success! Your message has been sent.</span>");

私の質問は、processForm.phpページにリダイレクトせずにフォームdiv内にメッセージを保持するにはどうすればよいですか?

必要に応じてprocessForm.php全体を投稿できますが、長いです。

ありがとう

32
mewebs

送信時に同じページにとどまるために、アクションを空(action="")のままにしておくか、フォームタグをそのままにしておくことができます。

メッセージの場合、変数($message = "Success! You entered: ".$input;")を作成し、ページ内のメッセージを表示する場所で変数を<?php echo $message; ?>でエコーします。

このような:

<?php
$message = "";
if(isset($_POST['SubmitButton'])){ //check if form was submitted
  $input = $_POST['inputText']; //get input text
  $message = "Success! You entered: ".$input;
}    
?>

<html>
<body>    
<form action="" method="post">
<?php echo $message; ?>
  <input type="text" name="inputText"/>
  <input type="submit" name="SubmitButton"/>
</form>    
</body>
</html>
32
Tom Groot

同じページにとどまる最善の方法は、同じページに投稿することです。

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>">
13
ChaseC

それを行うには2つの方法があります。

  1. フォームを同じページに送信する:PHPスクリプトを使用して、送信されたフォームを処理します。 (これは、フォームactionを現在のページURLに設定することで実行できます。)

    if(isset($_POST['submit'])) {
        // Enter the code you want to execute after the form has been submitted
        // Display Success or Failure message (if any) 
      } else {
        // Display the Form and the Submit Button
    }  
    

。 2. AJAXフォーム送信を使用これは、初心者にとってメソッド#1よりも少し難しいです。

12
Ashrith Sheshan

フォームアクションで#アクションを使用できます

 <?php    
if(isset($_POST['SubmitButton'])){ //check if form was submitted
  $input = $_POST['inputText']; //get input text
  $message = "Success! You entered: ".$input;
}    
?>

<html>
<body>    
<form action="#" method="post">
<?php echo $message; ?>
  <input type="text" name="inputText"/>
  <input type="submit" name="SubmitButton"/>
</form>    
</body>
</html>
3

試してみてください...私のために働いた

<form action="submit.php" method="post">
<input type="text" name="input">
<input type="submit">
</form>

------ submit.php ------

<?php header("Location: ../index.php"); ?>
2
user8564352

友達。この方法を使用すると、「未定義の変数メッセージ」がなくなり、正常に機能します。

<?php
    if(isset($_POST['SubmitButton'])){
        $price = $_POST["price"];
        $qty = $_POST["qty"];
        $message = $price*$qty;
    }

        ?>

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="#" method="post">
            <input type="number" name="price"> <br>
            <input type="number" name="qty"><br>
            <input type="submit" name="SubmitButton">
        </form>
        <?php echo "The Answer is" .$message; ?>

    </body>
    </html>
2
john abraham

次のようなコードを使用する必要があります。

echo "<div id='divwithform'>";

if(isset($_POST['submit']))  // if form was submitted (if you came here with form data)
{
    echo "Success";
}
else                // if form was not submitted (if you came here without form data)
{
    echo "<form> ... </form>";
} 

echo "</div>";

このようなifを含むコードは多くのページで一般的ですが、これは非常に単純化されています。

通常、最初の「if」でいくつかのデータを検証する必要があります(フォームフィールドが空でないかどうかを確認するなど)。

www.thenewboston.org または phpacademy.org にアクセスしてください。フォームを含む非常に優れたPHPビデオチュートリアルがあります。

1
Kamil

同じページのフォームアクションの次の例を見ることができます

<form action="" method="post">
<table border="1px">
    <tr><td>Name: <input type="text" name="user_name" ></td></tr>
    <tr><td align="right"> <input type="submit" value="submit" name="btn"> 
</td></tr>
</table>
</form>

<?php
  if(isset($_POST['btn'])){
     $name=$_POST['user_name'];
     echo 'Welcome to '. $name; 
   }
 ?>
0
Majbah Habib

私がしていることは、エラーが発生したときに送信後にページを保持したいので...ページをリロードすることです:

($_SERVER["PHP_SELF"])

別のファイルからのスリップを含めますが、例えば

include_once "test.php";

私もどこかで読んだ

if(isset($_POST['submit']))

フォームを投稿する初心者の昔ながらの方法であり、

if ($_SERVER['REQUEST_METHOD'] == 'POST')

使用する必要があります(私の言葉ではなく、どこかで読んでください)

0
Patrick Smit