PHP form - on submit stay on same page
I have a PHP form that is located on file contact.html
.
The form is processed from file processForm.php
.
When a user fills out the form and clicks on submit,
processForm.php
sends the email and direct the user to - processForm.php
with a message on that page "Success! Your message has been sent."
I do not know much about PHP, but I know that the action that is calling for this is:
// Die with a success message
die("<span class='success'>Success! Your message has been sent.</span>");
How can I keep the message inside the form div without redirecting to the
processForm.php
page?
I can post the entire processForm.php
if needed, but it is long.
In order to stay on the same page on submit you can leave action empty (action=""
) into the form tag, or leave it out altogether.
For the message, create a variable ($message = "Success! You entered: ".$input;"
) and then echo the variable at the place in the page where you want the message to appear with <?php echo $message; ?>
.
Like this:
<?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>
The best way to stay on the same page is to post to the same page:
<form method="post" action="<?=$_SERVER['PHP_SELF'];?>">
There are two ways of doing it:
-
Submit the form to the same page: Handle the submitted form using PHP script. (This can be done by setting the form
action
to the current page 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 }
-
Using AJAX Form Submission which is a little more difficult for a beginner than method #1.
You can use the #
action in a form action:
<?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>
Friend. Use this way, There will be no "Undefined variable message" and it will work fine.
<?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>