[Resolve]affichage d'erreur dynamique

affichage d'erreur dynamique [Resolve] - PHP - Programmation

Marsh Posté le 03-05-2011 à 09:47:50    

Bonjour à toutes et à tous !  
 
Tout d'abord désolé pour le titre, je ne savais pas trop comment intituler ma requête. Voilà, je actuellement en train de réaliser un formulaire pour contacter un administrateur. J'en suis au début. Aussi, j'ai réalisé une fonction qui gère les erreurs : champ non-rempli / forme d'émail non valide etc / captcha fausse (pas encore en place...)
 
Le tout doit tenir sur une seule page php ! Ceci est la condition la plus importante.
 
Bref je vous montre le code déjà réalisé :  

Code :
  1. <?php
  2. echo ' <p><span id="show_error"></span></p>'."\n";
  3. /* ------------- AFFICHAGE DU FORMULAIRE ------------- */
  4. // NOM / EMAIL / OBJET / MESSAGE / COPIE / VALIDATION
  5. echo '<form id="contact" method="post" action="">'."\n";
  6. echo ' <fieldset><legend>&nbsp;Vos coordonn&eacute;es&nbsp;</legend>'."\n";
  7. echo '        ...'."\n";
  8. echo ' <input type="submit" name="envoi" value="Envoyer le formulaire !" />'."\n";
  9. echo '</form>'."\n";
  10. /* ------------- TRAITEMENT DU FORMULAIRE ------------- */
  11. //On test si le formulaire à été envoyé
  12. if (isset($_POST['envoi']))
  13. {
  14.  //On test si l'un des champs du formulaire est vide; si oui, on arrête l'exécution du script.
  15.  if (empty($_POST['nom']) || empty($_POST['email']) || empty($_POST['objet']) || empty($_POST['message']))
  16.  {
  17.   traitement_error(0);
  18.   exit();
  19.  }
  20.  else
  21.  {
  22.   (...)
  23.  }
  24. }
  25. /* ------------- FONCTIONS UTILES ------------- */
  26. // TRAITEMENT DE L'ADRESSE MAIL
  27. function test_email($email)
  28. {
  29.  if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email))
  30.  {
  31.   traitement_error(1);
  32.   exit();
  33.  }
  34. }
  35. // TRAITEMENT DES ERREURS
  36. function traitement_error($error)
  37. {
  38.  $str = '<ul>'."\n";
  39.  switch ($error)
  40.  {
  41.   // si l'un des champs est vide.
  42.   case 0:
  43.   //echo 'Erreur : Veuillez remplir tous les champs.'."\n";
  44.   $str .= '<li>Erreur : Veuillez remplir tous les champs.</li>'."\n";
  45.   break;
  46.   // si l'adresse mail n'est pas valide.
  47.   case 1:
  48.   $str .= '<li>Erreur : Veuilez indiquer une adresse E-m@il valide.</li>'."\n";
  49.   break;
  50.   default:
  51.   $str .= '<li>Nothing.</li>'."\n";
  52.  }
  53.  $str .='</ul>'."\n";
  54.  //echo $str;
  55.  echo ' <script type="text/javascript">
  56.     window.onload=function()
  57.     {
  58.      document.getElementById("show_error" ).innerHTML= "'.$str.'" ;
  59.     }
  60.    </script>';
  61. }
  62. ?>


 
Le tout est que ma fonction traitement_error() puisse retourner le message d'erreur dans le <span> d'id show_error en haut, avant le formulaire.  
Ce code fonctionne bien dans l'immédiat, en même temps, rien d'exceptionnel, et ma variable $str est bien celle qu'elle doit être, l'affichage du code source le prouve... Je me demande juste comment faire donc pour positionner mon message d'erreur ?
 
Au passage vaut-il mieux utiliser <span> ou une <div> ?
 
Merci en tout cas du temps que vous prendrez à lire mon message et à celui que vous accorderez à ma réponse.


Message édité par Eznable le 03-05-2011 à 10:55:29
Reply

Marsh Posté le 03-05-2011 à 09:47:50   

Reply

Marsh Posté le 03-05-2011 à 10:52:33    

Problème résolu :  
 
Il semble qu'il faille déclarer une variable javascript, à laquelle je donne la valeur de la chaine de caractère str.
Ensuite, je réutilise simplement cette variable.  
 
Dans la fonction traitement_error()
Remplacer  

Code :
  1. echo ' <script type="text/javascript">
  2.      window.onload=function()
  3.      {
  4.       document.getElementById("show_error" ).innerHTML= "'.$str.'" ;
  5.      }
  6.     </script>';


 
Par :  
 

Code :
  1. echo ' <script type="text/javascript">
  2.     var error = '.$str.';
  3.     window.onload=function()
  4.     {
  5.      document.getElementById("show_error" ).innerHTML = error;
  6.     }
  7.    </script>';

Reply

Sujets relatifs:

Leave a Replay

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