Page 1 sur 1

problème erreurs formulaire

Posté : 12 mars 2012, 11:59
par bostak
Bonjour,

J'ai fais un formulaire qui fonctionne mais pas comme je veux, je déclarer un tableau $errors = array() et ensuite je met toutes mes erreurs dedans sauf que quoi qu'il arrive si je fait un var_dump de $errors['mail']
alors que le champ est vide il y a rien dedans et du coup l'erreur s'affiche pas où je veux, je ne comprend pas pourquoi cela ne fonctionnne pas ?

Voilà le bout de code qui check (dans ce fichier j'inclu le fichier où il y a mes fonctions pour les erreurs ):

Code : Tout sélectionner

else if($action == 'inscription') { if(isset($_POST['inscription'])) { $errors = array(); if(isset($_POST['mail'])) { $errors['mail'] = errorEmail($_POST['mail']); var_dump($errors['mail']); $email = $_POST['mail']; } if(isset($_POST['login'])) { $errors['login'] = errorLogin($_POST['login']); $login = $_POST['login']; } if(isset($_POST['pass'])) { $errors['pass'] = errorPass($_POST['pass']); $pass = $_POST['pass']; } if(isset($_POST['passverif']) && isset($_POST['pass'])) { $errors['passverif'] = errorPassverif($_POST['passverif'], $_POST['pass']); $passverif = $_POST['passverif']; }
Voilà une fonction qui check les erreurs :

Code : Tout sélectionner

function errorEmail($donnee) { if(empty($donnee)) { $message = putMessage("Veuillez indiquer votre adresse email"); return $message; } elseif(!preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#', $donnee)) { $message = putMessage("Votre adresse email n'est pas valide"); return $message; } }
Et voilà ce qui se passe niveau formulaire :

Code : Tout sélectionner

<tr> <td> Mail : </td> <td> <?php if(isset($mail)) echo '<input type="text" name="mail" value="'.htmlentities($mail).'" />'; else echo '<input type="text" name="mail" />'; if(!empty($errors['mail'])) echo $errors['mail']; ?> </td> </tr>
Cordialement,

Re: problème erreurs formulaire

Posté : 12 mars 2012, 12:32
par sirakawa
Dans un premier temps, je commente juste la fonction function errorEmail($donnee).
Si elle fonctionne correctement, il faudra analyser l'autre partie du code.
Bonjour,

J'ai fait un formulaire qui fonctionne mais pas comme je veux, je déclare un tableau $errors = array() et ensuite je mets toutes mes erreurs dedans sauf que, quoi qu'il arrive, si je fais un var_dump de $errors['mail']
alors que le champ est vide il y a rien dedans et du coup l'erreur ne s'affiche pas où je veux, je ne comprends pas pourquoi cela ne fonctionnne pas ?

Voilà le bout de code qui check (dans ce fichier j'inclus le fichier où il y a mes fonctions pour les erreurs ):

Code : Tout sélectionner

else if($action == 'inscription') { if(isset($_POST['inscription'])) { $errors = array(); if(isset($_POST['mail'])) { $errors['mail'] = errorEmail($_POST['mail']); var_dump($errors['mail']); $email = $_POST['mail']; } if(isset($_POST['login'])) { $errors['login'] = errorLogin($_POST['login']); $login = $_POST['login']; } if(isset($_POST['pass'])) { $errors['pass'] = errorPass($_POST['pass']); $pass = $_POST['pass']; } if(isset($_POST['passverif']) && isset($_POST['pass'])) { $errors['passverif'] = errorPassverif($_POST['passverif'], $_POST['pass']); $passverif = $_POST['passverif']; }
_____________________________________________________________
Voilà une fonction qui check les erreurs :

Code : Tout sélectionner

function errorEmail($donnee) { // à tout hasard print "<br> donnee $donnee"; // ajout pour que message ait toujours une valeur $message = ""; if(empty($donnee)) { // si donnee est correcte et vide ajouter //print "<br>on est dans le premier if "; $message = putMessage("Veuillez indiquer votre adresse email"); // return $message; } elseif(!preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#', $donnee))// preg_match retourne un entier { // si donnee n'est pas vide mais n'est pas un email valide ajouter print "on est dans le elseif"; $message = putMessage("Votre adresse email n'est pas valide"); // return $message; } // vérification print "<br>le message est $message"; // algorithmiquement, il est meilleur d'avoir un seul point de sortie return $message; } _________________________________________________________________
Et voilà ce qui se passe niveau formulaire :

Code : Tout sélectionner

<tr> <td> Mail : </td> <td> <?php if(isset($mail)) echo '<input type="text" name="mail" value="'.htmlentities($mail).'" />'; else echo '<input type="text" name="mail" />'; if(!empty($errors['mail'])) echo $errors['mail']; ?> </td> </tr>
Cordialement,

Re: problème erreurs formulaire

Posté : 12 mars 2012, 12:40
par bostak
je viens de retester la fonction tout est ok, elle fonctionne parfaitement et le truc c'est que j'ai limpression que le reste du code fonctionne aussi car les erreurs sont bien gérées tout fonctionne nikel c'est juste que le tableau des erreurs est vide et sa je comprend vraiment pas.

Cordialement,

Re: problème erreurs formulaire

Posté : 12 mars 2012, 12:43
par Shenryu
Salut,

Que fais ta fonction putMessage ? Elle fait pas directement un echo par hasard ? :roll:

++

Re: problème erreurs formulaire

Posté : 12 mars 2012, 12:46
par bostak
euhh enfaite si elle fait un echo,

Code : Tout sélectionner

<?php function putMessage($problem) { echo("<br /><strong style='color:red'>".$problem."</strong>"); } ?>

Re: problème erreurs formulaire

Posté : 12 mars 2012, 12:49
par Shenryu
Du coup, tu ne stockes pas dans ton tableau car tu ne retournes rien mais tu affiches dès que tu appelles ta fonction.

Il faut que tu utilises un return ;)

Re: problème erreurs formulaire

Posté : 12 mars 2012, 12:54
par bostak
Effectivement le problème venait bien de là, je viens de refaire mes fonctions avec des return et la sa fonctionne sans problème.

merci beaucoup de votre coup de main rapide et efficace.

Cordialement,