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全体を投稿できますが、長いです。
ありがとう
送信時に同じページにとどまるために、アクションを空(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>
同じページにとどまる最善の方法は、同じページに投稿することです。
<form method="post" action="<?=$_SERVER['PHP_SELF'];?>">
それを行うには2つの方法があります。
フォームを同じページに送信する: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よりも少し難しいです。
フォームアクションで#アクションを使用できます
<?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>
試してみてください...私のために働いた
<form action="submit.php" method="post">
<input type="text" name="input">
<input type="submit">
</form>
------ submit.php ------
<?php header("Location: ../index.php"); ?>
友達。この方法を使用すると、「未定義の変数メッセージ」がなくなり、正常に機能します。
<?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>
次のようなコードを使用する必要があります。
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ビデオチュートリアルがあります。
同じページのフォームアクションの次の例を見ることができます
<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;
}
?>
私がしていることは、エラーが発生したときに送信後にページを保持したいので...ページをリロードすることです:
($_SERVER["PHP_SELF"])
別のファイルからのスリップを含めますが、例えば
include_once "test.php";
私もどこかで読んだ
if(isset($_POST['submit']))
フォームを投稿する初心者の昔ながらの方法であり、
if ($_SERVER['REQUEST_METHOD'] == 'POST')
使用する必要があります(私の言葉ではなく、どこかで読んでください)