web-dev-qa-db-fra.com

Effacer le champ de formulaire après la soumission réussie du formulaire php

Je fais un formulaire simple le problème que je suis confronté est lorsque je soumets les valeurs du formulaire reste encore dans le domaine et je veux effacer après la soumission réussie. S'il vous plaît aider.

voici mon code pour le formulaire ..

<label class="w">Plan :</label>
<select autofocus="" name="plan" required="required">
    <option value="">Select One</option>
    <option value="FREE Account">FREE Account</option>
    <option value="Premium Account Monthly">Premium Account Monthly</option>
    <option value="Premium Account Yearly">Premium Account Yearly</option>
</select>
<br>
<label class="w">First Name :</label><input name="firstname" type="text" placeholder="First Name" required="required" value="<?php echo $_POST['firstname'];?>"><br>
<label class="w">Last Name :</label><input name="lastname" type="text" placeholder="Last Name" required="required" value="<?php echo $_POST['lastname'];?>"><br>
<label class="w">E-mail ID :</label><input name="email" type="email" placeholder="Enter Email" required="required" value="<?php echo $_POST['email'];?>"><br>
<label class="w">Password :</label><input name="password" type="password" placeholder="********" required="required" value="<?php echo $_POST['password'];?>"><br>
<label class="w">Re-Enter Password :</label><input name="confirmpassword" type="password" placeholder="********" required="required" value="<?php echo $_POST['confirmpassword'];?>"><br>
<label class="w">Street Address 1 :</label><input name="strtadd1" type="text" placeholder="street address first" required="required" value="<?php echo $_POST['strtadd1'];?>"><br>
<label class="w">Street Address 2 :</label><input name="strtadd2" type="text" placeholder="street address second"  value="<?php echo $_POST['strtadd2'];?>"><br>
<label class="w">City :</label><input name="city" type="text" placeholder="City" required="required" value="<?php echo $_POST['firstname'];?>"><br>
<label class="w">Country :</label><select autofocus="" id="a1_txtBox1" name="country" required="required" placeholder="select one" value="<?php echo $_POST['country'];?>">

Toute aide serait appréciée

4
user3077217

Ils restent dans les champs car vous indiquez explicitement à PHP de remplir le formulaire avec les données soumises.

<input name="firstname" type="text" placeholder="First Name" required="required" 
value="<?php echo $_POST['firstname'];?>">
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HERE

Supprimez-le simplement ou si vous souhaitez qu'une condition ne le fasse pas, spécifiez une instruction if sur cette echo ou nettoyez simplement les champs $_POST.

$_POST = array(); // lets pretend nothing was posted

Ou, en cas de succès, redirigez l'utilisateur vers une autre page:

header("Location: success.html");
exit; // Location header is set, pointless to send HTML, stop the script

Qui est d'ailleurs la méthode préférée. Si vous conservez l'utilisateur dans une page qui a été atteinte via une méthode POST, s'il actualise la page, le formulaire sera soumis à nouveau.

8
Havenard

Vous pouvez utiliser .reset() sur votre formulaire.

$(".myform")[0].reset();
7
Jeribo

Les données POST qui contiennent les données de formulaire soumises sont répercutées dans le formulaire, par exemple: 

<input name="firstname" type="text" placeholder="First Name" required="required" 
value="<?php echo $_POST['firstname'];?>"  

Effacez les données POST une fois que vous avez terminé avec le formulaire: toutes les entrées sont correctes et vous avez agi quel que soit le résultat de votre formulaire.
Ou, une fois que vous avez déterminé que le formulaire est correct et que vous avez effectué l'action souhaitée, redirigez l'utilisateur vers une nouvelle page pour lui dire "tout est fait, merci", etc. 

header('Location: thanks.php');
exit();

Cela empêche la présence des données POST, elle est connue sous le nom de "publication/redirection/obtention":
http://fr.wikipedia.org/wiki/Post/Redirect/Get

La méthode PRG (Post/Redirect/Get) et l'utilisation d'une autre page garantissent également que si les utilisateurs cliquent sur l'actualisation du navigateur ou sur le bouton Précédent ayant navigué ailleurs, votre formulaire n'est pas soumis à nouveau.
Cela signifie que si votre formulaire est inséré dans une base de données, ou envoie un courrier électronique à une personne (etc.), sans la méthode PRG, les valeurs seront (probablement) insérées/envoyées par courrier électronique chaque fois que l'utilisateur clique sur rafraîchir ou revisiter la page à l'aide de son bouton Historique/Précédent. 

2
James

Je faisais face à ce problème similaire et ne voulais pas utiliser header () pour rediriger vers une autre page.

Solution:  

Utilisez $_POST = array(); pour réinitialiser le tableau $_POST en haut du formulaire, ainsi que le code utilisé pour traiter le formulaire.

Les messages d’erreur ou de réussite peuvent être ajoutés après le formulaire, conditionnellement . J'espère que cela vous aidera :)

2
spartan

J'essayais juste de corriger la même erreur, je l'ai finalement corrigée, alors je vais vous copier une partie du code, peut-être que cela vous aidera.

<input type="text" name="usu" id="usu" value="<?php echo $usu;?>" ></input>
<input type="text" name="pass" id="pass" value="<?php echo $varpass;?>"></input>  

ce sont les entrées que je voulais nettoyer après avoir appuyé sur mon bouton.

Et voici le code php:

$query= "INSERT INTO usuarios (tipo, usuario, password) VALUES ('".$vartipo."', '".$usu."', '".$varpass."')";


        if (!mysqli_query($conexion,$query)){

            die('Error: ' . mysqli_error($conexion));
        }

        else{


            $usu = '';  
            $varpass= '';   

            $result = '<div class="result_ok">El usuario se ha registrado con éxito! <div>';        


        }

$ usu = '';
$ varpass = '';
 

ce sont les lignes qui nettoient les entrées: D

1
Haditahh

Placez la fonction onClick dans le bouton submit:

<input type="text" id="firstname">
<input type="text" id="lastname">
<input type="submit" value="Submit" onClick="clearform();" />

Dans le <head>, définissez la fonction clearform () et définissez la valeur de la zone de texte sur "":

function clearform()
{
    document.getElementById("firstname").value=""; //don't forget to set the textbox id
    document.getElementById("lastname").value="";
}

De cette façon, la zone de texte sera effacée lorsque vous cliquerez sur le bouton d'envoi.

1
aiman9000

Si vous souhaitez que le champ de votre formulaire soit effacé, vous devez uniquement ajouter un délai à l'événement onClick, tel que:

<input name="submit" id="MyButton" type="submit" class="btn-lg" value="ClickMe" onClick="setTimeout('clearform()', 2000 );"

onClick="setTimeout('clearform()', 1500 );" . in 1,5 seconds its clear

document.getElementById("name").value = "";  <<<<<<just correct this
document.getElementById("telephone").value = "";    <<<<<correct this

Par clearform(), j'entends votre fonction de compensation des champs.

0
daniel

ce code vous aidera

if($insert){$_POST['name']="";$_POST['content']=""}
0
GlintWeb
// This file is PHP.
<html>    
<?php
    if ($_POST['submit']) {
        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $confirmpassword = $_POST['confirmpassword'];
        $strtadd1 = $_POST['strtadd1'];
        $strtadd2 = $_POST['strtadd2'];
        $city = $_POST['city'];
        $country = $_POST['country'];
        $success = '';


        // Upon Success.
        if ($firstname != '' && $lastname != '' && $email != '' && $password != '' && $confirmpassword != '' && $strtadd1 != '' && $strtadd2 != '' && $city != '' && $country != '') {
            // Change $success variable from an empty string.
            $success = 'success';

            // Insert whatever you want to do upon success.

        } else {
            // Upon Failure.
            echo '<p class="error">Fill in all fields.</p>';

            // Set $success variable to an empty string.
            $success = '';
        }
    }
   ?>
<form method="POST" action="#">
    <label class="w">Plan :</label>
    <select autofocus="" name="plan" required="required">
        <option value="">Select One</option>
        <option value="FREE Account">FREE Account</option>
        <option value="Premium Account Monthly">Premium Account Monthly</option>
        <option value="Premium Account Yearly">Premium Account Yearly</option>
    </select>
    <br>
    <label class="w">First Name :</label><input name="firstname" type="text" placeholder="First Name" required="required" value="<?php if (isset($firstname) && $success == '') {echo $firstname;} ?>"><br>
    <label class="w">Last Name :</label><input name="lastname" type="text" placeholder="Last Name" required="required" value="<?php if (isset($lastname) && $success == '') {echo $lastname;} ?>"><br>
    <label class="w">E-mail ID :</label><input name="email" type="email"  placeholder="Enter Email" required="required" value="<?php if (isset($email) && $success == '') {echo $email;} ?>"><br>
    <label class="w">Password :</label><input name="password" type="password" placeholder="********" required="required" value="<?php if (isset($password) && $success == '') {echo $password;} ?>"><br>
    <label class="w">Re-Enter Password :</label><input name="confirmpassword" type="password" placeholder="********" required="required" value="<?php if (isset($confirmpassword) && $success == '') {echo $confirmpassword;} ?>"><br>
    <label class="w">Street Address 1 :</label><input name="strtadd1" type="text" placeholder="street address first" required="required" value="<?php if (isset($strtadd1) && $success == '') {echo $strtadd1;} ?>"><br>
    <label class="w">Street Address 2 :</label><input name="strtadd2" type="text" placeholder="street address second"  value="<?php if (isset($strtadd2) && $success == '') {echo $strtadd2;} ?>"><br>
    <label class="w">City :</label><input name="city" type="text" placeholder="City" required="required" value="<?php if (isset($city) && $success == '') {echo $city;} ?>"><br>
    <label class="w">Country :</label><select autofocus="" id="a1_txtBox1" name="country" required="required" placeholder="select one" value="<?php if (isset($country) && $success == '') {echo $country;} ?>">
    <input type="submit" name="submit">
</form>
</html>

Utilisez value="<?php if (isset($firstname) && $success == '') {echo $firstname;} ?>"</ code>
Vous devrez ensuite créer la variable $ success - comme je l’ai fait dans mon exemple.

0
Jedakiah Moore