Page 1 sur 1

Retour arriere quand erreur dans formulaire

Posté : 24 févr. 2009, 10:14
par fabrice88250
bonjour,
j'utilise un formulaire avec test des champs pour incrémenté ma base de données.
lorsque un champ a été oublié j'ai un message me disant (le champ XXX n'est pas renseigné. veuillez renseigner ce champ merci)
Donc lorsque ce message apparait je retoune en arrière mais pas de chance il faut re remplire entiérement le formulaire car les infos ne sont pas restées en mémoire.

Existe-il une solution pour que si on a une erreur, en retournant au formulaire on a toujours les infos que l'on a rentrées ?

merci

Posté : 24 févr. 2009, 10:53
par sylvaing26
Oui avec du Java

Code : Tout sélectionner

<script language="JavaScript" type="text/javascript"> <!-- function validate(){ if ( ( document.form1.nom.value == "" ) ||( document.form1.prenom.value == "" ) ||( document.form1.mail.value == "" )||( document.form1.sujet.value == "" )||( document.form1.contenu.value == "" ) || ( document.form1.mail.value.search("@") == -1 ) || ( document.form1.mail.value.search("[.*]" ) == -1 ) ) { alert( "Assurez-vous d'avoir rempli correctement votre formulaire avant de le valider." ); } else { document.form1.action = "envoi.php" document.form1.method = "post" document.form1.submit(); } } //--> </script> <form name="form1"> <p style="text-indent:-3; margin-top:25; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;">Nom : <input type="text" name="nom" style="font-family:Arial; font-size:8pt;"></span></font></p> <p style="text-indent:-3; margin-top:10; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;">Prénom : <input type="text" name="prenom" style="font-family:Arial; font-size:8pt;"></span></font></p> <p style="text-indent:-3; margin-top:10; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;">E-mail : <input type="text" name="mail" style="font-family:Arial; font-size:8pt;"></span></font></p> <p style="text-indent:-3; margin-top:10; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;">Objet du message : <input type="text" name="sujet" style="font-family:Arial; font-size:8pt;"></span></font></p> <p style="text-indent:-3; margin-top:10; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;">Contenu du message :</span></font></p> <p style="text-indent:-3; margin-top:0; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;"><textarea name="contenu" rows="8" cols="46" style="font-family:Arial; font-size:8pt;"></textarea></span></font></p> <p style="text-indent:-3; margin-top:10; margin-right:24; margin-bottom:0; margin-left:71;" align="left"><font face="Arial"><span style="font-size:8pt;"><input type="submit" name="envoi" value="Envoyer" onclick="validate()" ></span></font></p> </form>
Même âs besoin que ton formulaire soit dans une page PHP :wink:

Posté : 24 févr. 2009, 13:48
par Aureusms
Si javascript est désactivé, tu fais dans la page de validation du formulaire un retour à la page du formulaire via la fonction header où tu redonnes les valeurs envoyées via des variables de sessions enregistrées dans la page de validaion;, Comme un exemple est mieux qu'un grand discours :
<?php
session_start();
if (!isset($_POST["essai"]) or !isset($_POST["essai2"]))
{
  ?>
  <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"
  <label>
   Entrez votre essai
  </label>
  <input type="text" name="essai" value="<?php echo (isset($_SESSION["value_essai"] && !empty($_SESSION["value_essai"])) ? $_SESSION["value_essai"] : "" ;?>"/>
  <input type="text" name="essai2" value="<?php echo (isset($_SESSION["value_essai2"] && !empty($_SESSION["value_essai2"])) ? $_SESSION["value_essai2"] : "" ;?>"/>
  </form>
  <?php
}
else //formulaire posté
{
  $_SESSION["value_essai2"] = $_POST["essai2"];
  $_SESSION["value_essai"] = $_POST["essai"];

  if (empty($_SESSION["value_essai"]) or empty($_SESSION["value_essai2"]))
  header ("Location:".$_SERVER["PHP_SELF"]);
  else
  //suite du traitement
}
?>