Bonjour,
Post by ADDébutant en PHP.
On est tous passés par là. ;-)
Post by ADQue 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