Retour arriere quand erreur dans formulaire

Mammouth du PHP | 620 Messages

24 févr. 2009, 10:14

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

Mammouth du PHP | 686 Messages

24 févr. 2009, 10:53

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:

ViPHP
ViPHP | 1996 Messages

24 févr. 2009, 13:48

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
}
?>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr