Méthode pour formulaires

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 555 fois - Téléchargée 27 fois

Contenu du snippet

Voilà une petite méthode pour gérer vos formulaires et traiter les erreurs le mieux possible...

Source / Exemple :


<?
if($_POST[validation]) { // On traite le formulaire

// On récupère proprement les données du formulaire
for(list($nom, $variable) = each($_POST))
$$nom = $variable:

// On vérifie les erreurs dans le formulaire
// On place toutes les erreurs trouvées dans un tableau

if($nom == "") $erreur[nom] = "vide";
else if($nom == "casimir") $erreur[nom] = "interdit";

if($prénom == "") $erreur[prénom] = "vide";

if($mail == "") $erreur[mail] = "vide";
else if(!ereg("(.*)@(.*)\.[a-z]{2,6}")) $erreur[mail] = "syntaxe";

if($conditions != 1) $erreur[conditions] = "refuse";

// On traite les erreurs :

if(is_array($erreur)) { // S'il y a des erreurs

echo "<table><tr><td>Merci de corriger les erreurs suivantes :<br><br>";

switch($erreur[nom]) { // S'il y a une erreur dans le nom...
case "vide" : echo "Vous n'avez pas indiqué votre nom."; break; // On a trouvé que l'internaute avait po mis son nom
case "casimir" : echo "Votre nom ne doit pas être Casimir !"; break;
// + autres erreurs éventuelles
}
switch($erreur[prénom]) {
case "vide" : echo "Vous n'avez pas indiqué votre prénom."; break;
// + autres erreurs éventuelles
}
switch($erreur[mail]) {
case "vide" : echo "Vous n'avez pas indiqué votre adresse e-mail."; break;
case "syntaxe" : echo "Adresse e-mail syntaxiquement erronée."; break;
// + autres erreurs éventuelles
}
switch($erreur[conditions]) {
case "refuse" : echo "Vous n'avez pas accepté les conditions."; break;
// + autres erreurs éventuelles
}

/*
Je sais que ça ne sert à rien de faire un switch pour 1 valeur, mais c'est juste pour montrer le principe qu'il faut suivre dans le gestion du formulaire

  • /
echo "</td></tr></table>"; } } ?> <? /* Votre formulaire. Vous ajoutez des champs comme vous voulez. Pour afficher la valeur par défaut dans un champ texte, on met htmlspcecialchars($variable) pour éviter des conflits. On affiche le formulaire que s'il n'est pas validé
  • /
if(!$validation || is_array($erreur)) { ?> <form action='<? echo $PHP_SELF ?>' method='post'> <input type="hidden" name="validation" value=1> Nom : <input type="text" name="nom" value="<? echo htmlspecialchars($nom) ?>"><br> Prénom : <input type="text" name="prénom" value="<? echo htmlspecialchars($prénom) ?>"><br> Adresse e-mail : <input type="text" name="mail" value="<? echo htmlspecialchars($mail) ?>"><br> Acceptez-vous les conditions ? <input type="checkbox" name="conditions" value=1 <? if($conditions) echo "checked" ?>><br> <input type="submit" value='Envoyer"> </form> <? } else { // Le formulaire est validé // Vous traitez le formulaire echo "Formulaire envoyé avec succès !"; } ?>

Conclusion :


Voilà c'est la méthode que j'utilise pour mes formulaires.
J'ai fait le code sans le tester donc il reste peut être des erreurs php. merci de m'en faire part pour que je les corrige.

A voir également

Ajouter un commentaire

Commentaires

matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
pour $_POST, c'est depuis la dernière version de PHP
or, rares sont les hébergeurs, même payants, qui mettent leurs systèmes à jour fréquemment. Vu que çà reste rétrocompatible, je conseille plutot $HTTP_POST_VARS... Le progrès à ses inconvénients... :D
revinc
Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017
-
Ouais OK mais à moyen terme le http_post_vars risque bien de disparaître...
cs_iubito
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006
-
c ça que je trouve con d'ailleurs, ils pourraient pas laisser les 2, qu'on fasse http_post_vars ou _post ? (y'a bien un système d'alias,non?)
la_pin
Messages postés
277
Date d'inscription
mercredi 11 août 2004
Statut
Membre
Dernière intervention
15 décembre 2005
-
euh... je veux pas être un rabat-joie mais le script me met plein de messages d'erreurs du style Parse error: parse error, unexpected T_VARIABLE, expecting ';' in /var/www/free.fr/7/a/jeanphilippe.blancha/euro/2/tests/mail2.php on line 6 etc..., comme je suis qu'un débutant en php, jessaye tant bien que mal a corriger tt sa mais sa marche pas mieux, est ce que quelqu'un pourrait m'aider pliz !?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.