Discussion:
formulaire-Messages d'erreurs
(trop ancien pour répondre)
AD
2009-09-14 12:56:00 UTC
Permalink
Bonjour,

Débutant en PHP.

Que faut-il changer pour qu'apparaissent en même temps tous les messages
d'erreurs, et la couleur des champs respectif, plutôt que l'un après
l'autre.
(S'il y a 3 erreurs/oublis, que les 3 messages apparaissent de suite sur
la page, et non champ après champs erronés.)

voici l'adresse du script qui m'a l'air très propre, autant que je puisse
en juger.
http://dev.ppan.net/formulaire-sans-javascript-avec-piece-jointe.php
Olivier Miakinen
2009-09-14 16:50:42 UTC
Permalink
Bonjour,
Post by AD
Débutant en PHP.
On est tous passés par là. ;-)
Post by AD
Que faut-il changer pour qu'apparaissent en même temps tous les messages
d'erreurs, et la couleur des champs respectif, plutôt que l'un après
l'autre.
(S'il y a 3 erreurs/oublis, que les 3 messages apparaissent de suite sur
la page, et non champ après champs erronés.)
voici l'adresse du script qui m'a l'air très propre, autant que je puisse
en juger.
http://dev.ppan.net/formulaire-sans-javascript-avec-piece-jointe.php
Dans ce script, c'est une variable simple $focus qui donne le numéro du
champ devant avoir le focus ($focus = 1, 2, 3, etc.). Une idée pourrait
être de la remplacer par un tableau. Vu qu'il y a aussi une variable
$erreur qui elle-même ne peut contenir qu'un seul message d'erreur,
pourquoi ne pas mettre ce message dans le tableau ?

Par exemple, au lieu de :
if (empty($_POST['Nom'])) {
$erreur = "Merci de renseigner votre nom";
$focus = 3;
}

tu pourrais avoir :
if (empty($_POST['Nom'])) {
$focus[3] = "Merci de renseigner votre nom";
}

Du coup, à la fin, tu remplacerais « if ($focus == 3) » par
« if (isset($focus[3])) », le message d'erreur se trouvant alors
dans $focus[3].


Attention, je te signale au passage que le test de conformité de
l'adresse email fait partie des innombrables tests bugués au delà de
toute expression et qui se retransmettent de site en site :
if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4})$`',$_POST['Email']))

Ce test refusera par exemple ma propre adresse de courriel, qui est
pourtant parfaitement valide.

Voir plutôt <http://faqfclphp.free.fr/#rub5.3>.


Enfin, je n'ai pas vu de vrai contrôle des données qui viennent de
l'extérieur, mais le code est trop difficile à lire pour que je vérifie
s'il y en a ou pas : les lignes sont trop longues, et même en ouvrant
les fenêtres au maximum le système d'ascenseur est trop pénible à utiliser.


Cordialement,
--
Olivier Miakinen
Continuer la lecture sur narkive:
Loading...