formulaire-Messages d'erreurs

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #20142361
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

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
Publicité
Poster une réponse
Anonyme