web-dev-qa-db-fra.com

formulaire php - sur soumettre, restez sur la même page

J'ai un formulaire php qui se trouve sur contact.html

Le formulaire est traité à partir de processForm.php

Lorsqu'un utilisateur remplit le formulaire et clique sur soumettre, le ProcessForm.php envoie le courrier électronique et le dirige vers - processForm.php Avec un message sur la page "Succès! Votre message a été envoyé."

Je ne connais pas grand chose à propos de php, mais je sais que l'action qui appelle à cela est la suivante:

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

Ma question est la suivante: comment puis-je conserver le message dans le formulaire div sans avoir à rediriger vers la page ProcessForm.php?

Je peux poster l'intégralité du fichier processForm.php si nécessaire, mais c'est long.

Merci

27
mewebs

Pour rester sur la même page lors de la soumission, vous pouvez laisser l'action vide (action="") dans la balise de formulaire ou la laisser complètement.

Pour le message, créez une variable ($message = "Success! You entered: ".$input;"), puis indiquez-la à l'emplacement de la page où vous souhaitez que le message apparaisse avec <?php echo $message; ?>.

Comme ça:

<?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>
30
Tom Groot

Le meilleur moyen de rester sur la même page est de poster sur la même page.

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

Il y a deux façons de le faire:

  1. Soumettez le formulaire sur la même page : Traitez le formulaire soumis à l'aide du script PHP. (Cela peut être fait en définissant le formulaire action sur l'URL de la page en cours.)

    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. Utilisation de AJAX Soumission de formulaire qui est un peu plus difficile pour un débutant que la méthode n ° 1.

12
Ashrith Sheshan

Ami Utilisez cette manière, il n'y aura pas de "message de variable indéfinie" et cela fonctionnera correctement.

<?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>
3
john abraham

Vous pouvez utiliser # action dans l'action de formulaire

 <?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
Surendra Kumar Ahir

Essayez ceci ... a fonctionné pour moi

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

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

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

Vous devez utiliser un code similaire à ceci:

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>";

Le code avec if comme celui-ci est typique de nombreuses pages, mais cela est très simplifié.

Normalement, vous devez valider certaines données dans le premier "if" (vérifiez si les champs du formulaire n'étaient pas vides, etc.).

Veuillez visiter www.thenewboston.org ou phpacademy.org . Il existe de très bons tutoriels vidéo PHP, y compris des formulaires.

1
Kamil

Vous pouvez voir l'exemple suivant pour le action Form sur la même page

<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

Ce que je fais, c'est que je veux que la page reste après l'envoi quand il y a des erreurs ... Je veux donc que la page soit rechargée:

($_SERVER["PHP_SELF"])

Bien que j'inclus le script d'un fichier séparé, par exemple

include_once "test.php";

J'ai aussi lu quelque part que

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

Est-ce une méthode de fasion ancienne pour les débutants qui poste un formulaire, et

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

Devrait être utilisé (Pas mes mots, lisez-le quelque part)

0
Patrick Smit