begin process at 2012 02 09 12:13:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > MÉTHODE POUR FORMULAIRES

MÉTHODE POUR FORMULAIRES


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Niveau :Débutant Date de création :14/05/2003 Date de mise à jour :14/05/2003 10:29:42 Vu :7 309

Auteur : revinc

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • <?
  • 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 !";
  • }
  • ?>
<?
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.  


 Sources du même auteur

Source avec Zip BASE DE MOTEUR DE RECHERCHE
Source avec une capture DES GRAPHIQUES PARAMÉTRABLES
Source avec Zip TUTO+SOURCE #3 : ESPACE MEMBRE SANS MYSQL
TUTO+SOURCE #2 : ESPACE MEMBRE SANS MYSQL
TUTO+SOURCE #1 : ESPACE MEMBRE SANS MYSQL

 Sources de la même categorie

Source avec Zip VÉRIFICATION DE FORMULAIRE EN PHP par psonic13
Source avec Zip Source avec une capture CALENDRIER RÉSERVATION POUR CHAMBRES D'HÔTES EN PHP MYSQL par oallais
Source avec Zip Source avec une capture UPLOADEUR DE FICHIERS MULTIPLES V1 par cod57
FORM, ORM POUR FORMULAIRE par choy
Source avec Zip Source avec une capture LOGIN SHA1 + CRÉATION UTILISATEUR par aventurier19

Commentaires et avis

Commentaire de matrey le 14/05/2003 19:11:32

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

Commentaire de revinc le 15/05/2003 11:12:04

Ouais OK mais à moyen terme le http_post_vars risque bien de disparaître...

Commentaire de iubito le 15/05/2003 14:56:39

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?)

Commentaire de la_pin le 16/12/2004 20:57:52

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 !?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales