[RESOLU] ouvrir une fenêtre avec php pour un formulaire

Invité
Invité n'ayant pas de compte PHPfrance

16 janv. 2006, 12:51

re bonjour
merci pour tout mon formulaire marche enfin !

j'ai fait des test sur mes champs avec le code suivant

$fax = $_POST['fax'];
if (($fax != "" )and (strlen($fax)!=10)) exit("votre fax doit comporter 10 chiffres.");
if (($fax != "" )and !is_numeric($fax)) exit("votre fax ne doit comporter que des chiffres.");

Mais le problème c'est que si la personne remplie tous les champs et qu'il y a une erreur, en cliquant sur précédent elle perd tout ce qu'elle a écrit

Au lieu de faire un exit comment puis je faire pour qu'une petite fenêtre apparaisse
j'ai vu quelques codes en java mais j'arrive pas à les intégrer à la suite de mon code php

merci encore pour vos pistes !

Eléphant du PHP | 337 Messages

16 janv. 2006, 14:04

Pour gérer les erreurs formulaires sans que l'utilisateur perde ce qu'il a mis, je fais généralement comme ça :
// --> VALIDATION FORMULAIRE
if($_POST['validation'])
{
   // Condition erreur 1
   if(condition1)
   {
      //...
      Echo "Message d'erreur 1";
   }

   // Condition erreur 2
   else if(condition2)
   {
      //...
      Echo "Message d'erreur 2";
   }

   // Condition erreur 3
   else if(condition3)
   {
      //...
      Echo "Message d'erreur 3";
   }

   // Envoi du formulaire
   else
   {
      $VALIDE_OK = TRUE;
      //...
   }
}

// --> AFFICHAGE FORMULAIRE
if($VALIDE_OK != TRUE)
{
   if($_POST['validation'])
   {
      $champ1 = $_POST['champ1'];
      $champ2 = $_POST['champ2'];
      $champ3 = $_POST['champ3'];
   }

   echo "<form method='POST' action='$PHP_SELF'>";
   echo "<input type='texte' name='champ1' value=\"$champ1\">";
   echo "<input type='texte' name='champ2' value=\"$champ2\">";
   echo "<input type='texte' name='champ3' value=\"$champ3\">";
}
Voilà. Par contre, il faut faire attention à la façon dont tu gères les apostrophes et le guillemets.

Invité
Invité n'ayant pas de compte PHPfrance

16 janv. 2006, 14:32

ok merci je vais cogiter tout ça !

Mammouth du PHP | 1776 Messages

16 janv. 2006, 14:40

Moi je mets les variables en session et je les ressert au passage...
Ou alors tu mets un isset(tes variables envoyées) et tu affoches en fonction ensuite le formulaire ou autre page.
$mavarpass = FALSE;
if(isset($_POST['envoi']))
{
     echo "c'est envoyé!";
     $mavarpass = TRUE;
}
if($mavarpass == FALSE)
{
     //formulaire
}
Ensuite, dans ton formaulire, il te suffit de resservir le champ
if(isset($_POST['monchamp'])) echo "value='".$_POST['monchamp']."'";
Après, tu couples à tout cela un javascript préventif, et t'as des laertes de partout :P