Page 1 sur 1
Vérifier un champ facultatif dans un formulaire
Posté : 14 mars 2008, 15:00
par neiler
Bonjour,
Je me suis décidé après plusieurs heures de recherche et le clavier par la fenêtre

à vous exposez mon problème :
Je cherche à contrôler les informations saisie dans un champ facultatif. Mon champ est vide mais j’ai le message d’erreur d’afficher. Je voudrais que le message d’erreur soit afficher seulement qu’en le champ est renseigné.
Besoin de vos

merci.
Posté : 14 mars 2008, 15:46
par Hywan
Bonjour et bienvenue

.
Pour ton problème, tu as déjà énoncé les cas toi-même :
- si le champ est vide, on ne fait pas de vérification ;
- sinon on vérifie son contenu.
On traduit ça en PHP :
if(!empty($_POST['monChampFacultatif'])) {
// on vérifie son contenu
}
Et le tour est joué

. Tu avais déjà la réponse.
Posté : 14 mars 2008, 17:28
par neiler
Merci HyWaN de m'avoir répondu aussi rapidement.
Le problème

maintenant c'est qu'il ne contrôle plus les champs en aval.
Je crois que je ne suis pas fait pour le php.
if(!empty($nom) && !empty($email) && !empty($message))
{
if(strlen($nom) > '2')
{
if(!empty($_POST['numero']))
if(eregi("^[0-9]{10}$", $numero))
{
if(strlen($message) > '9')
{
if(strlen($message) < '999')
{
{
if(mail($recipient, $subject, $msg, $mailheaders));
$good="Message envoyé avec succès.";
}
unset($nom, $numero, $email, $message);
}
else
{
$error="Votre message doit contenir 1000 caractères au maximum.";
}
}
else
{
$error="Votre message doit contenir 10 caractères au minimum.";
}
}
else
{
$error="Votre numéro de téléphone doit contenir 10 chiffres sans espaces.";
}
}
else
{
$error="Votre nom doit contenir 3 caractères au minimum.";
}
}
else
{
$error="Veuillez remplir tous les champs obligatoires.";
}
}
Posté : 14 mars 2008, 17:56
par Hywan
Je crois que c'est plus simple dans ton cas de gérer les cas 1 par 1. Je m'explique :
$error = array();
// si le champ n'est pas vide
if(!empty($_POST['nom'])) {
// si son nombre de caractère est inférieur à 2 (sinon rien)
if(strlen($_POST['nom']) < 2)
$error[] = 'Le nom doit contenir 2 caractères au minimum.';
}
// sinon (il est vide)
else
$error[] = 'Le nom doit être défini (champ obligatoire).';
if(!empty($_POST['email']))
// même travail.
// notre champ facultatif
// s'il est rempli, alors on vérifie son contenu
if(!empty($_POST['facultatif'])) {
// on vérifie son contenu
if(/*action_non_respectée*/)
$error[] = 'Le champ facultatif n\'est pas renseigné correctement.';
}
// sinon (s'il est vide) rien, il est facultatif !
Je n'arrive à voir où est ton champ facultatif dans ton code.
De plus, fais attention à tes bornes (1000 > 999, donc il faut mettre > 1000 par exemple, c'est mieux). Et PHP comprend les entiers, donc 7 plutôt que '7'.
Posté : 14 mars 2008, 18:03
par neiler
Ok parfait merci. Je recode tout ça.

Posté : 15 mars 2008, 20:25
par neiler
Bonjour,
J’ai suivie l’exemple proposé par HyWaN pour le contrôle des champs, tout est ok. Merci HyWaN

.
Pour faire les tests de vérification des champs j’avais supprimé la ligne de fonction mail. Mon problème maintenant c’est qu’une fois que j’ai rajouté la ligne :
if(mail($recipient, $subject, $msg, $mailheaders));
Ca ne vérifie plus le contenue des champs et m’envoie email directement.
Merci.
Posté : 15 mars 2008, 20:30
par Hywan
Tu l'as mise où cette ligne ?
Posté : 15 mars 2008, 20:34
par neiler
Mon sauveur

.
A la suite "des fonctions de contrôle"

, je sais que ce n’est pas bon mais je n’ai pas trouvé comment faire …
Posté : 15 mars 2008, 21:07
par Hywan
Comme on a rempli un tableau, il faut faire : si le tableau est vide (on n'a pas eu d'erreur), alors on peut envoyer le mail, sinon on affiche le contenu du tableau pour voir les erreurs (print_r ou foreach pour un résultat plus élégant).
Posté : 15 mars 2008, 22:15
par neiler
Ok merci. Je vais essayer de faire comme ça "je pence avoir compris"

.