Effacement d'un formulaire

Effacement d'un formulaire - PHP - Programmation

Marsh Posté le 18-10-2005 à 15:40:52    

Bonjour,
 
Je rencontre le problème suivant :
J'ai créé un formulaire : <form name="formulaire" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
avec un bouton d'effacement : <input name="efface" type="reset"  value="Effacer" />
et un bouton de validation : <input name="valide" type="submit" value="Envoyer" />
 
Au tout début de mon fichier PHP qui contient le formulaire j'ai :
<?php
settype($msoc,"string" );
settype($soc,"boolean" );
$soc=TRUE;
....
if (isset($_POST['valide']))
{
$societe=data($_POST['societe']);
if (empty($societe))
{
$soc=FALSE;
$msoc="Vous devez saisir le nom de votre société ou de votre cabinet.";
}
else
$soc=TRUE;
....
if ($soc AND $civ AND $cou AND $nam AND $pre AND $tex AND $numt AND $lco AND $lge)
{
header("Location: errenv.php" );
}
}
?>
 
Voici ce qui se passe :
 
Quand je rentre sur la page la première fois, si je rentre des infos dans mes champs de formulaire et que je clic sur le bouton "Effacer" (avant de cliquer sur le bouon "Envoyer" ), tout s'efface ce qui est normal.
 
Par contre, dès que je clique sur le bouton "Envoyer" et qu'il y a des erreurs (certains champs du formulaire sont obligatoires), on reviebt alors sur la même page avec affichage de message d'erreurs. Et alors si maintenant je clique sur le bouton "Effacer" rien de n'efface !
Pourquoi et comment y remédier ?
 
Merci pour vos réponses.
 
Alf

Reply

Marsh Posté le 18-10-2005 à 15:40:52   

Reply

Marsh Posté le 18-10-2005 à 15:48:17    

Tout simplement parce que le bouton reset n'efface pas les champs des formulaires, il se contente de leur redonner leur valeur par défaut.
 
Donc, si au rechargement de ta page après erreur, tu donnes une valeur à la propriété value de tes champs, le clique sur le bouton reset redonne ses valeurs aux champs.
 
Tout est marqué là dedans :  
- http://www.w3.org/TR/html4/interac [...] set-button
- http://www.w3.org/TR/html4/interac [...] tial-value

Citation :


In general, a control's "initial value" may be specified with the control element's value attribute.

Reply

Marsh Posté le 18-10-2005 à 15:59:29    

Effectivement j'ai ceci :
<input class="forms" type="text" name="societe" size="31" maxlength="50" <?php if (isset($_POST['societe'])) { echo "value='$societe'"; } ?> />
Cela sert lors du réaffichage de la page pour que ce que la personne à saisie avant de cliquer sur le bouton "Envoyer" voit ce qu'elle a saisi en cas d'erreur. Je ne peux donc pas enlever : <?php if (isset($_POST['societe'])) { echo "value='$societe'"; } ?> de mon champ de formulaire.
Je ne vois pas comment faire pour que le bouton "Effacer" fonctionne quand même. Pourrais-tu m'aider ?

Reply

Marsh Posté le 18-10-2005 à 16:18:12    

Fais un bout de code en javascript au pire [:spamafote]
 
Et pour ton code, c'est _beaucoup_ plus lisible sur le forum si tu le mets entre balise [fixed][/fixed] ou [cpp][/cpp] ...

Reply

Marsh Posté le 18-10-2005 à 16:23:22    

Je vaux absomuemnt éviter le javascript.
 
J'ai ajouter onreset dans la balise form et cela donne :


<form name="formulaire" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" onreset="<?php $societe=''; ?>" >


Seulement, il m'efface le contenu du champ "societe" lors du rechargement de la page (clic sur "Envoyer" et erreur) sans même avoir appuyer sur le bouton "Effacer".
 
Help !

Reply

Marsh Posté le 18-10-2005 à 16:30:24    

Faut pas utiliser de bouton reset, mais un bouton submit :

<form...>
  <div>
   <label>...
   ...
   <input type="submit" name="action" value="Effacer" />
   <input type="submit" name="action" value="Envoyer" />
  </div>
</form>


Puis dans le script PHP correspondant :

$action = isset($_POST['action']) ? $_POST['action'] : '';
 
if($action == 'Effacer') {
 
  // Ici on met une valeur nulle à chaque champ
 
} elseif($action == 'Envoyer') {
 
  // Sauvegarde
}


Message édité par FlorentG le 18-10-2005 à 16:30:47
Reply

Marsh Posté le 18-10-2005 à 16:36:30    

Ah ouais ! cool l'astuce !
 
Bien vu et merci !

Reply

Marsh Posté le 18-10-2005 à 17:03:52    

Je viens d'essayer et ça marche bien sauf pour les champs types radio-bouton et cases-à-cocher.
Comment réinitialiser ces 2 types de champs ?
 
Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed