Réinitialisation que de certains champs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Réinitialisation que de certains champs

Re: Réinitialisation que de certains champs

par Skikit » 10 mars 2010, 14:52

Il est en effet possible d'arriver au même résultat sans utiliser javascript mais cela implique de faire travailler le serveur inutilement.
Je t'explique la logique :
Ton bouton Réinitialiser devient un type submit, de cette façon, tu peux tester dans la page envoidevis2.php lequel des 2 boutons submit à été cliqué. Si c'est le bouton réinitialiser, tu rediriges le client vers la page du formulaire en envoyant juste les données qui ne doivent pas être réinitialisées lors du clique sur le bouton Réinitialiser.
Dans ta page de formulaire tu test si les variables existent, et si c'est le cas, tu remplis l'attribut value de tes input par les variables ainsi récupérées.

L'avantage du javascript, c'est que c'est la machine du client qui travaille.

Bon courage pour la suite ;)

Re: Réinitialisation que de certains champs

par Lullaby » 10 mars 2010, 12:58

Impeccable !!!
Merci beaucoup de ton aide, je commençais à devenir chèvre avec cette histoire !!
(Comme je débute, rien que le mot javascript me fait peur :lol: )

Juste pour info (je reste sur la solution que tu m'as donnée qui est plus qu'inespérée !), il existe une solution sans utiliser de javascript ou pas du tout ?

EDIT: en fait pas impeccable tant que ça.
Ca a résolu mon problème de réinitialisation de champs par contre le bouton "envoyer" ne fonctionne plus... même en ayant bien mis "return false"...

EDIT 2: C'est officiel, je suis un boulet. Ca fonctionne parfaitement (j'avais juste coché sans faire attention, la fonction MAJ des liens avec Dreamweaver à la suite d'une suppression et d'un renommage de fichier et tout a foiré, logique !).

Merci !!!

Re: Réinitialisation que de certains champs

par Skikit » 10 mars 2010, 12:12

Salut,

Le bouton de type reset ne va pas exécuter le code de ta page envoidevis2.php donc c'est inutile d'essayer de gérer ton problème dans celle-ci.
Ce qu'il te faut correspond plus à du javascript qui sera exécuté sur la page de ton formulaire.
Le javascript est exécuté côté client donc uniquement sur le navigateur de l'utilisateur.
Voici un exemple de remise à blanc d'un champ de formulaire :
<script type="text/javascript">
    function RemiseAblanc(champ) {
        champ.value = "";
    }
</script>
<input type="text" name="champ1" onclick="RemiseAblanc(this);" value="vvv" />
Ici le onclick permet d'appeler la fonction javascript RemiseAblanc avec en paramètre le DOM input.
Evidemment, ce code n'est pas exploitable dans ton cas mais tu peux t'en inspirer pour créer toi même un bouton qui videra les champs que tu souhaites.
exemple :
<script type="text/javascript">
    function ResetAll() {
        document.getElementById("prenom").value = "";
        document.getElementById("email").value = "";
    }
</script>
<button onclick="ResetAll(); return false;">Réinitialiser</button>
Note : le return false est très important sinon le navigateur risque de prendre le bouton pour un submit et par conséquent valider le formulaire.
La fonction ResetAll te permet ici de mettre à blanc tes champs "prenom" et "email", ils sont récupérés par le javascript grâce à leur attribut "id".

En espérant avoir pu t'aider :)

Réinitialisation que de certains champs

par Lullaby » 09 mars 2010, 11:09

Bonjour,
Je débute en php et rencontre un problème.
j'ai un formulaire en "2 parties" (mais dans la même balise "form"). Je m'explique : au début du formulaire l'internaute rempli les informations le concernant (nom/prénom/structure/adresse/email ....). Dans la seconde partie, il choisit les produits pour une demande de devis.

J'aimerai que le bouton RESET ne s'applique qu'aux champs concernant la commande sans effacer les informations concernant l'internaute.
Est-ce possible ?
Je cherche depuis hier sans succès.

Ma piste (ce code apparait dans la page "cible" du formulaire... Cela ne fonctionne pas).
if (isset($_POST['reset'])) {
unset ($_SESSION['structure']);
}
"Structure" est ici le nom d'un champ.

Je vous laisse les codes (je rappelle, je débute donc le code c'est plus du bricolage qu'un truc pro et propre :wink: )
Voici le formulaire :
Vos fichiers seront à envoyer par mail à <a href="mailto:[email protected]" target="_blank">[email protected]</a></p>
<form method="post" action="envoidevis2.php" enctype="multipart/form-data">

<fieldset>
       <legend>Vos coordonnées</legend> <!-- Titre du fieldset -->
 
       <label for="structure">Vous êtes : </label>
       <select name="structure" id="structure">
           <option value="particulier">Un particulier</option>
           <option value="association">Une association</option>
           <option value="entreprise">Une entreprise</option>
       </select><br />
 		<label for="nom_structure">Structure : </label>
        <input type="text" name="nom_structure" id="nom_structure"/><br/>     
      
       <label for="nom">Nom : * </label><input type="text" name="nom" id="nom" tabindex="10" /><br />
 
       <label for="prenom">Prénom : </label><input type="text" name="prenom" id="prenom" tabindex="20" /><br />
 
       <label for="email">E-Mail : *</label><input type="text" name="email" id="email" tabindex="30" /><br />
       
       <label for="adresse">Adresse : *</label>
       <input type="text" name="adresse" id="adresse" tabindex="40" /><br />
       
       <label for="cp">Code Postal : *</label>
       <input type="text" name="cp" id="cp" tabindex="50" /> <br />
       
       <label for="ville">Ville : *</label>
       <input type="text" name="ville" id="ville" tabindex="60" /><br />
       
       <label for="pays">Pays : </label>
       <input type="text" name="pays" id="pays" tabindex="70" /><br />
   </fieldset>

<fieldset>
       <legend>Votre demande</legend> <!-- Titre du fieldset -->
       
       <label for="badges25c">Badges 25mm Classiques :  </label>
       <select name="badges25c" id="badges25c">
           <option value="0">0 Badges - 0€</option>
           <option value="50">50 Badges - 20,58&euro;</option>
           <option value="100">100 Badges - 33,58&euro;</option>
           <option value="200">200 Badges - 61,58&euro;</option>
           <option value="300">300 Badges - 83,01&euro;</option>
           <option value="400">400 Badges - 108,01&euro;</option>
           <option value="500">500 Badges - 134,73&euro;</option>
           <option value="600">600 Badges - 159,15&euro;</option>
           <option value="700">700 Badges - 184,15&euro;</option>
           <option value="800">800 Badges - 209,84&euro;</option>
           <option value="900">900 Badges - 234,15&euro;</option>
           <option value="1000">1000 Badges - 249,49&euro;</option>  
       </select><br />
       
        <label for="badges25m">Badges 25mm Métalliques :  </label>
       <select name="badges25m" id="badges25m">
           <option value="0">0 Badges - 0€</option>
           <option value="50">50 Badges - 20,58&euro;</option>
           <option value="100">100 Badges - 33,58&euro;</option>
           <option value="200">200 Badges - 61,58&euro;</option>
           <option value="300">300 Badges - 83,01&euro;</option>
           <option value="400">400 Badges - 108,01&euro;</option>
           <option value="500">500 Badges - 134,73&euro;</option>
           <option value="600">600 Badges - 159,15&euro;</option>
           <option value="700">700 Badges - 184,15&euro;</option>
           <option value="800">800 Badges - 209,84&euro;</option>
           <option value="900">900 Badges - 234,15&euro;</option>
           <option value="1000">1000 Badges - 249,49&euro;</option>  
       </select><br />
       
        <label for="badges32c">Badges 32mm Classiques :  </label>
       <select name="badges32c" id="badges32c">
           <option value="0">0 Badges - 0€</option>
           <option value="50">50 Badges - 27,59&euro;</option>
           <option value="100">100 Badges - 45,58&euro;</option>
           <option value="200">200 Badges - 82,01&euro;</option>
           <option value="300">300 Badges - 118,15&euro;</option>
           <option value="400">400 Badges - 152,15&euro;</option>
           <option value="500">500 Badges - 183,29&euro;</option>
           <option value="600">600 Badges - 210,29&euro;</option>
           <option value="700">700 Badges - 235,29&euro;</option>
           <option value="800">800 Badges - 270,56&euro;</option>
           <option value="900">900 Badges - 291,56&euro;</option>
           <option value="1000">1000 Badges - 311,56&euro;</option>  
       </select><br />
       
         <label for="badges32m">Badges 32mm Métalliques :  </label>
       <select name="badges32m" id="badges32m">
           <option value="0">0 Badges - 0€</option>
           <option value="50">50 Badges - 27,59&euro;</option>
           <option value="100">100 Badges - 45,58&euro;</option>
           <option value="200">200 Badges - 82,01&euro;</option>
           <option value="300">300 Badges - 118,15&euro;</option>
           <option value="400">400 Badges - 152,15&euro;</option>
           <option value="500">500 Badges - 183,29&euro;</option>
           <option value="600">600 Badges - 210,29&euro;</option>
           <option value="700">700 Badges - 235,29&euro;</option>
           <option value="800">800 Badges - 270,56&euro;</option>
           <option value="900">900 Badges - 291,56&euro;</option>
           <option value="1000">1000 Badges - 311,56&euro;</option>  
       </select><br />
 
        <label for="magnets25c">Magnets 25mm Classiques :  </label>
       <select name="magnets25c" id="magnets25c">
           <option value="0">0 Magnets - 0€</option>
           <option value="50">50 Magnets - 41,58&euro;</option>
           <option value="100">100 Magnets - 76,01&euro;</option>
           <option value="200">200 Magnets - 144,15&euro;</option>
           <option value="300">300 Magnets - 209,15&euro;</option>
           <option value="400">400 Magnets - 270,29&euro;</option>
           <option value="500">500 Magnets - 334,56&euro;</option>
           <option value="600">600 Magnets - 392,56&euro;</option>
           <option value="700">700 Magnets - 447,56&euro;</option>
           <option value="800">800 Magnets - 499,56&euro;</option>
           <option value="900">900 Magnets - 535&euro;</option>
           <option value="1000">1000 Magnets - 475&euro;</option>  
       </select> <br />
        
        <label for="magnets25m">Magnets 25mm Métalliques :  </label>
       <select name="magnets25m" id="magnets25m">
           <option value="0">0 Magnets - 0€</option>
           <option value="50">50 Magnets - 41,58&euro;</option>
           <option value="100">100 Magnets - 76,01&euro;</option>
           <option value="200">200 Magnets - 144,15&euro;</option>
           <option value="300">300 Magnets - 209,15&euro;</option>
           <option value="400">400 Magnets - 270,29&euro;</option>
           <option value="500">500 Magnets - 334,56&euro;</option>
           <option value="600">600 Magnets - 392,56&euro;</option>
           <option value="700">700 Magnets - 447,56&euro;</option>
           <option value="800">800 Magnets - 499,56&euro;</option>
           <option value="900">900 Magnets - 535&euro;</option>
           <option value="1000">1000 Magnets - 475&euro;</option>  
       </select><br />
       
       
         <label for="portecle25c">Porte-clé 25mm Classiques :  </label>
       <select name="portecle25c" id="portecle25c">
           <option value="0">0 Porte-clé - 0€</option>
           <option value="50">50 Porte-clé - 43,59&euro;</option>
           <option value="100">100 Porte-clé - 88,01&euro;</option>
           <option value="200">200 Porte-clé - 169,15&euro;</option>
           <option value="300">300 Porte-clé - 244,15&euro;</option>
           <option value="400">400 Porte-clé - 320,29&euro;</option>
           <option value="500">500 Porte-clé - 390,29&euro;</option>
           <option value="600">600 Porte-clé - 462,56&euro;</option>
           <option value="700">700 Porte-clé - 527,56&euro;</option>
           <option value="800">800 Porte-clés - 592,56&euro;</option>
           <option value="900">900 Porte-clé - 657,56&euro;</option>
           <option value="1000">1000 Porte-clé - 598&euro;</option>  
       </select><br />
       
         <label for="portecle25m">Porte-clé 25mm Métalliques :  </label>
       <select name="portecle25m" id="portecle25m">
           <option value="0">0 Porte-clé - 0€</option>
           <option value="50">50 Porte-clé - 43,59&euro;</option>
           <option value="100">100 Porte-clé - 88,01&euro;</option>
           <option value="200">200 Porte-clé - 169,15&euro;</option>
           <option value="300">300 Porte-clé - 244,15&euro;</option>
           <option value="400">400 Porte-clé - 320,29&euro;</option>
           <option value="500">500 Porte-clé - 390,29&euro;</option>
           <option value="600">600 Porte-clé - 462,56&euro;</option>
           <option value="700">700 Porte-clé - 527,56&euro;</option>
           <option value="800">800 Porte-clés - 592,56&euro;</option>
           <option value="900">900 Porte-clé - 657,56&euro;</option>
           <option value="1000">1000 Porte-clé - 598&euro;</option>  
       </select><br /> 
       
  
         
<input type="hidden" name="id_formulaire"/>
<br> <input type="submit" name="envoi" value="Envoyer"> - <input type="reset" name="reset" value="Réinitialiser">

</form>
Et voici sa page cible :
mysql_connect ($host, $user, $password);
mysql_select_db ("*******") or die ;

$structure=$_POST['structure'];
$nom_structure=$_POST['nom_structure'];
$nom=$_POST['nom'];
	if(empty($nom)) 
	{ 
	print("Les champs marqués d'une * sont obligatoires ! <br> <a href=\"javascript:history.back()\" title=\"Retour\">Retour</a>");
	exit();
	}
$prenom=$_POST['prenom'];
$email=$_POST['email'];
	if(empty($email)) 
	{ 
	print("Les champs marqués d'une * sont obligatoires !<br> <a href=\"javascript:history.back()\" title=\"Retour\">Retour</a>");  
	exit(); 
	}
$adresse=$_POST['adresse'];
	if(empty($adresse)) 
	{ 
	print("Les champs marqués d'une * sont obligatoires !<br> <a href=\"javascript:history.back()\" title=\"Retour\">Retour</a>");  
	exit(); 
	}
$cp=$_POST['cp'];
	if(empty($cp)) 
	{ 
	print("Les champs marqués d'une * sont obligatoires !<br> <a href=\"javascript:history.back()\" title=\"Retour\">Retour</a>");
    exit(); 
	}
$ville=$_POST['ville'];
	if(empty($ville)) 
	{ 
	print("Les champs marqués d'une * sont obligatoires !<br> <a href=\"javascript:history.back()\" title=\"Retour\">Retour</a>");
	exit(); 
	}
$pays=$_POST['pays'];	
$badges25c=$_POST['badges25c'];	
$badges25m=$_POST['badges25m'];
$badges32c=$_POST['badges32m'];
$magnets25c=$_POST['magnets25m'];
$portecle25c=$_POST['portecle25c'];
$portecle25m=$_POST['portecle25m'];

// bouton réinitialiser sans infos personnes

if (isset($_POST['reset'])) {
unset ($_SESSION['structure']);
}

	                    
if (isset($_POST["envoi"]))
	{
	mysql_query("INSERT INTO formulaire VALUES('','" .$structure."', '" .$nom_structure."', '" .$nom."', '" .$prenom."', '" .$email."', '" .$adresse."', '" .$cp."', '" .$ville."', '" .$pays."', '" .$badges25c."', '" .$badges25m."', '".$badges32c."', '".$badges32m."', '".$magnets25c."', '".$magnets25m."', '".$portecle25c."', '".$portecle25m."')");

	//mail ('[email protected]', "Activtion du compte lutilisateur",'Bonjour, une inscription est actuellement en attente, merci de l\'activer ou l\'annuler '); 
	
	
	echo("Bonjour ".$prenom." ".$nom." , vos données ont été envoyées. Elles seront visibles une fois que l'administrateur aura validé votre profil.");
	mysql_close();
	}

?>
Si quelqu'un peut m'éclairer ou m'aiguiller vers un tuto que j'aurai zappé...
Merci d'avance.