controles des champ et correction du formulaire PHP - PHP - Programmation
Marsh Posté le 11-12-2004 à 23:37:50
Bein tu recuperes toutes les variables et les valeurs postées (avec un balayage de $_POST[]) .. Je sais pas si c'est ca que tu demandais ...
Marsh Posté le 11-12-2004 à 23:39:35
Je dirais, à la réception du form :
- un flag du genre $erreur, false par défaut ;
- une suite de if vérifiant la validité de chaque champ, avec un echo en cas d'erreur et $erreur qui passe à true ;
- si $erreur vaut true (au moins une erreur), réaffichage du formulaire, sinon affichage du récap.
Marsh Posté le 12-12-2004 à 04:39:26
+1 pour les autres
si une valeur à été rensignée, tu la met en "value" du formulaire au réaffichage de celui-ci, ce qui évite de la resaisir et un message correspondant au champ pas rempli (tu test dans un if et au 1er champ important pas rempli tu sort --> de maniere itérative le "posteur" va finir par tout remplir )
Marsh Posté le 15-12-2004 à 11:21:34
Yo
Voilà un exemplaire de formulaire. Je n'ai reproduit que les parties interessantes.
Il y a quelques subtilités à cause de problème potentiels de codage :
- la BDD est en ISO-8859
- la page est en unicode (UTF-8)
- le formulaire doit être entré en ISO, mais il faut quand même prévoir le cas du navigateur qui envoi les données en unicode
En bref, l'algo c'est :
SI données envoyées
ALORS vérifier la validité des données
SI pas de données OU données invalides
ALORS afficher formulaire (pré-rempli avec données, si existantes)
SI données envoyées et valides
ALORS enregister dans la BDD
Code :
|
Marsh Posté le 15-12-2004 à 11:43:41
Pour être prevenu par mail en cas de pépin, je fais aussi un
Code :
|
en même temps que le
Code :
|
mais je l'ai enlevé pour que le bloc de code soit plus digeste ... le vrai formulaire fait 308 lignes, avec plus de champs, et les fonctions de mise en forme du nom (tout en majuscule) et du prénom (majuscule initiales).
Marsh Posté le 15-12-2004 à 14:51:50
Sielfried a écrit : Je dirais, à la réception du form : |
Je fais ça, avec éventuellement un code erreur particulier.
Marsh Posté le 24-01-2005 à 23:02:34
Dans le cas du réaffichage du formulaire comment y ajouter les valeurs déja entrées. Et comment aussi changer les intitulés à corriger en rouge ?
Marsh Posté le 24-01-2005 à 23:10:01
Sylva1n,
pourrai-tu développer ces problèmes de compatibilité de standard de texte ?
Aussi apparement lors d'erreurs tu réaffiche le formulaire avec les champs pré-rempli en recodant tout le formulaire. Ne pourrai-t-on pas envisager placer ce foumulaire dans un .php et ensuite l'appeler avec un include mais dans ce cas est-il toujours possible de modifier certaine propriété du texte dans le formulaire. Le but étant de coder une seule et unique fois le formulaire (pratique en cas de modification).
Et pur finir, ton code de formatage des noms en majuscules et des prénoms m'intersse. t'est il possible de le diffuser ?
Merci d'avance.
Marsh Posté le 24-01-2005 à 23:20:00
Citation : 1. <tr> |
Nothing a écrit : Dans le cas du réaffichage du formulaire comment y ajouter les valeurs déja entrées. |
Ligne 3 : la variable $pnom_aff contient $POST[pnom] une fois nettoyée (codage ISO/UTF, supression du code HTML, ...etc).
Nothing a écrit : Et comment aussi changer les intitulés à corriger en rouge ? |
Ligne 2 : la variable $pnom_err passe à vrai si $POST[pnom] ne passe pas les vérification (les expressions régulières, c'est le pied pour ça)
Marsh Posté le 25-01-2005 à 02:15:01
merci Sylv1n.
Il faut donc utiliser les feuilles de style ou je me plante complétement ? (cd 'class="red"'
Marsh Posté le 25-01-2005 à 09:36:18
Moi j'avais fait ça différement. C'était pour un formulaire d'envoi d'email (facilement modifiable pour l'insertion dans une base de données). En gros on tapotte la page en HTML normal, et on rajoute juste quelques fonctions dans les input, ça donnait quelque chose du genre :
Code :
|
Ca permet de tapotter son formulaire en HTML, et sans trop rajouter de PHP. L'idée en fait, c'est les petites fonctions (genre $mf->text('nom')) qui réaffiche les valeurs si besoin est, et qui permettent aussi de définir des valeurs par défaut. Si ça t'intéresse, j'peut te filer le truc Aussi, je gère la validation de l'email s'il y en a un, et un p'tit javascript est généré pour la validation côté client (tout en gardant une validation côté serveur pour ceux qui ont javascript désactivé).
Marsh Posté le 25-01-2005 à 10:30:50
Nothing a écrit : merci Sylv1n. |
On peut faire sans ... mais c'est quand même quasiment indispensable d'utiliser les CSS aujourd'hui !
Marsh Posté le 25-01-2005 à 11:38:48
Bon faut que je bosse les feuilles de style...
merci encore.
Marsh Posté le 25-01-2005 à 21:11:51
Ok je me suis donc renseigné sur le CSS.
Il faut donc que je réaffiche le formulaire avec les champs déja rempli et appliquer une CSS différente c'est ça ?
Mais dans ce cas je suis donc obligé de coder une seconde fois le formulaire ou puis-je faire un include ("formulaire.php" ) et dans ce cas comment remplir les champs avec les données précédentes ?
Marsh Posté le 25-01-2005 à 21:38:21
Nothing a écrit : Ok je me suis donc renseigné sur le CSS. |
Non pas appliquer une CSS différente, utiliser une class CSS différente suivant que le champs est correct ou pas, oui
Marsh Posté le 25-01-2005 à 22:27:49
Ok merci naceroth.
Et pour passer les valeurs déja écrites suis-je donc obliger de ré-écrire le formulaire ? ou include ?
Marsh Posté le 26-01-2005 à 01:21:16
Non, un include du formulaire c'est bon, du moment que ton fichier peut récupérer les données envoyées précédement (et gérer le cas où il en a pas, pour éviter les messages d'erreur idiots )
Marsh Posté le 27-01-2005 à 23:29:09
Ok merci naceroth,
c'est un dans la même optique que je compte m'y prendre.
Marsh Posté le 11-12-2004 à 22:27:51
Bonsoir à tous
J'ai un petit formulaire avec des champs texte et liste deroulante je sais verifier si le champ est vide ou pas et une fois le questionnaire validé ce que j'aimerai faire c'est faire apparaitre le formulaire avec toutes les cases rempli correctement et en haut ecrit en rouge une ligne indiquant les champ a corriger et je ne connais pas la meillieur façon de le faire. Et si tous les champs sont bon alors j'afficherai un echo avec un recvap de tous les champs
Merci d'avance pour votre aide