Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

formulaire-Messages d'erreurs

1 réponse
Avatar
AD
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

1 réponse

Avatar
Olivier Miakinen
Bonjour,

Le 14/09/2009 14:56, AD a écrit :

Débutant en PHP.



On est tous passés par là. ;-)


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