problème erreurs formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème erreurs formulaire

Re: problème erreurs formulaire

par bostak » 12 mars 2012, 12:54

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,

Re: problème erreurs formulaire

par Shenryu » 12 mars 2012, 12:49

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

par bostak » 12 mars 2012, 12:46

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

par Shenryu » 12 mars 2012, 12:43

Salut,

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

++

Re: problème erreurs formulaire

par bostak » 12 mars 2012, 12:40

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

par sirakawa » 12 mars 2012, 12:32

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,

problème erreurs formulaire

par bostak » 12 mars 2012, 11:59

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,