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,
Dans un premier temps, je commente juste la fonction function errorEmail($donnee).
Si elle fonctionne correctement, il faudra analyser l'autre partie du code.
[quote="bostak"]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]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'];
}[/code]
_____________________________________________________________
Voilà une fonction qui check les erreurs :
[code]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;
}
_________________________________________________________________
[/code]
Et voilà ce qui se passe niveau formulaire :
[code]<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>[/code]
Cordialement,[/quote]