Générer et vérifier automatiquement un formulaire à partir de fichier .ini

Soyez le premier à donner votre avis sur cette source.

Vue 10 109 fois - Téléchargée 722 fois

Description

Bonjour, c'est la première fois que je dépose une source sur le site, j'espère que je vais être assez clair, et surtout qu'elle sera très utile. Je m'en sers régulièrement.
Explication : J'ai développé une fonction permettant de générer un formulaire automatiquement à partir d'un tableau associatif multidimension. Ce tableau peut être créé à partir de fichiers .ini, ce qui facilite l'utilisation.
Pour la vérification du formulaire, tout sera paramétré dans le fichier .ini (dans la partie code, vous verrez comment le formater).
Il vous faudra développer 2 fonctions qui seront appelées dans la fonction create_form() : une au cas où le formulaire a été rempli correctement, et une dans le cas contraire. Les deux fonctions devront prendre un seul paramètre, un tableau (associatif) contenant les données du formulaire. Dans le premier cas, ce sera les données correctes, dans le deuxième, les incorrectes. (En général, la fonction d'erreur liste les champs incorrects). Ces fonctions doivent retourner le texte (HTML) à afficher lors de la validation du formulaire.
Beaucoup de fonctions présentes dans la source vous seront utiles.
Plutôt que de passer du temps dans des explications qui embrouillent le cerveau, passons directement au code :p

Source / Exemple :


FORMULAIRE.INI
; INI pour le formulaire
; Possibilité d'ajouter des attributs
[form] ; pensez à bien écrire 'form' entre les crochets
; Mettre un ; devant les paramètres non renseignés
name = inscription
;action =
;class =
;id =
; STYLE : mettre entre "" la valeur.
;style =
;target =
method = post
enctype = multipart/form-data ; NE PAS OUBLIER si champs fichier dans le formulaire

; Fonctions à appeler pour le traitement des données postées.
callback = traiter_formulaire
callback_err = en_cas_d_erreur

; SUBMIT : ajoutez des attributs si nécessaire
[submit] ; pensez à bien écrire 'submit' entre les crochets
value = Inscription
class = "submit"
name = "submit"

CHAMPS.INI
; fichier de configuration pour les champs texte

; Aide à la compréhension du fichier
; ----------------------------------------------------------------------------------------------
; titre 		> Intitulé du champ, visible par l'internaute.
; nom_champ 		> Le nom destiné au champ (uniquement utilisé par la vérification
;				Attention tout de même à ne pas donner le même nom à
;				deux champs différents.
; type 			> type du champ (SELECT, TEXT, PASSWORD, RADIO, ...) en HTML.
; value_defaut		> Valeur par défaut du champ.
; option_champ		> Éventuelles options (ex: pour un type 'SELECT': 'MULTIPLE' peut
;				être une option.)
; selected_defaut	> Les options sélectionnées par défaut (uniquement pour les 'SELECT')
;				mettre ici l'index de la(des) valeur(s) sélectionnée(s) 
; double_saisie		> Le champ peut apparaître deux fois pour permettre une vérification
;				utile (pour les mots de passe par exemple)
; type_donnee		> Le type de données (pour vérification du format)
;				pris en compte actuellement : email, password, date, phone
; obligatoire		> Indique si le champ doit être nécessairement renseigné
; ----------------------------------------------------------------------------------------------

; REMARQUE :
;		Le bouton de validation de formulaire est automatiquement créé.
; Il n'est pas obligatoire de mettre des noms entre les crochets.
; J'ai mis le plus d'exemples possibles

[nom]
titre = Nom
nom_champ = nom
type = text
value_defaut = false
option_champ = false
selected_defaut = false
type_donnee = text
obligatoire = true

[adresse]
titre = Adresse
nom_champ = adresse
type = textarea
value_defaut = false
option_champ = "rows=5 cols=30"
selected_defaut = false
type_donnee = text
obligatoire = true

[date_naissance]
titre = "Date de naissance (JJ/MM/AAAA)"
nom_champ = date_naissance
type = text
value_defaut = ""
option_champ = "maxlength=10"
selected_defaut = false
type_donnee = date
obligatoire = true

[email]
titre = "Email (votre_nom@votre_domaine.com)"
nom_champ = email
type = text
value_defaut = false
option_champ = false
selected_defaut = false
type_donnee = email
obligatoire = true

[pass]
titre = "pass VIP"
nom_champ = password
type = password
value_defaut = false
option_champ = false
selected_defaut = false
type_donnee = password
obligatoire = true

[tel_fixe]
titre = "Téléphone fixe"
nom_champ = tel_fixe
type = text
value_defaut = false
option_champ = false
selected_defaut = false
type_donnee = phone
obligatoire = false

/* ------------------------------------------------------------------------------------------------- */
// PASSONS AU PHP

INDEX.PHP

/* -- VOS FONCTIONS -- */

include('fc_form.inc.php'); // Inclusion du fichier contenant les fonctions spécifiques aux formulaires

function traiter_formulaire($tab_form){
	$html = 'Voici le récapitulatif de vos données :<br>';
	$b=false;
	$m='';
	foreach($tab_form as $cle=>$valeur){
		if($b) $m.=', ';
		$m.='<b>'.$valeur.'</b>';
		$b=true;
	}
	$html.=$m;
	// Texte de retour
	return $html;
}
function en_cas_d_erreur($tab_form){
	$html = 'Les champs suivants ne sont pas correctements remplis :<br>';
	$b=false;
	$m='';
	foreach($tab_form as $cle=>$valeur){
		if($b) $m.=', ';
		$m.='<b>'.$valeur.'</b>';
		$b=true;
	}
	$html.=$m;
	// Texte de retour
	return $html;
}

// -- Récupération du formulaire
$t_param=parse_ini_file("FORMULAIRE.INI",true); // Fonction qui parse un ini toute seule ! :)
$t_param['champs']=parse_ini_file("CHAMPS.INI",true); // Bien placer le deuxième INI dans ['champs']
//
// La fonction validate_form() vérifie le formulaire. Elle retourne un tableau :
// dans la première case du tableau, -1, 0 ou 1 (formulaire pas soumis, incorrect, ou correct)
// dans la deuxième, un texte contenant ce que vos 2 fonctions retournent
//
list ( $valide , $texte ) = validate_form ( $t_param ) ;
//
if ( $valide < 1 ) { // Si le formulaire n'a pas été validé correctement
	$formulaire = create_form($t_param);
}

Conclusion :


- Remarques :
Les fonctions create_form() et validate_form() se trouvent dans un fichier externe, joint dans le zip.
Les mots de passes sont automatiquement cryptés en MD5 (il suffit de modifier la fonction pour supprimer cette opération).
Le paramètre double saisi d'un champ n'est pas pris en compte, mais je l'ai prévu au cas où je le développerai.

- Bugs :
Si on met autre chose que des chiffres dans la date, une erreur apparaît en Warning. Je viens de m'en apercevoir, je corrigerai ça dès que possible ;)

- Message aux webmasters :
J'ai trouvé ce message, en rouge et en gras au moment de poster ma source :
"Etes-vous sûr de l'orthographe de votre source ?
Avant de valider jettez un dernier p'tit coup d'oeil ;-)"
[ "Jettez"=> "Jetez" ]

Avez-vous vérifié VOTRE orthographe ?

voici un listing des fautes apparaissant juste dans cette page avec les corrections :
  • (...)exemple récurent et aillant un équivalent, votre source sera spprimée par un admin.

[ récurent => récurrent , aillant => ayant , spprimée => supprimée (pardonnable, faute de frappe...) ]
  • Dans quelle langage est la source que vous souhaitez poster ?

[ quelle => quel ]
  • Annotations finale(...)

[ finale => finales ]
  • (...)les .exe seront automatiquement supprimé lors de l'upload

[ supprimé => supprimés ]
  • doit être avec l'extention .jpg ou .jpeg !

[ extention => extension ]
Voilà !
J'ai vérifié mon orthographe MOI....... ;)
Je vous ai cassés / :p LOL

Sinon le site est excellent ^^
Merci à tous ceux qui se donnent la peine de le faire vivre et évoluer !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
28
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
14 août 2007

Salut à tous,

Un de ces quatre, il va y avoir une classe PHP qui génère un formulaire, sans avoir besoin de fichier extérieur. Mais cette méthode restera valable, puisqu'elle est un peu différente.

Tchou !
Messages postés
1
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
2 août 2005

un coucou du marseillais :p
c'est bien de partager ses sources. Mais bon y a certaines fonctions qui me rappellent quelque chose notamment en ce qui concerne la verification de formulaire ;)
Messages postés
4
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
19 mai 2005

Meuh non .. y'aura tous les autres qui sont sur gap ;p
Et puis on peut essayer de les bouger les marseillais pour le we qui suit !
+ dysA
Messages postés
28
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
14 août 2007

T'inquiète quéquette ! je reviens le week end d'après normalement, les marseillais viennent pas finalement... Je suis dégoûté aussi, je vais venir, yaura personne !!! :s

Allez @ plus KerJo !! ;)
Messages postés
4
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
19 mai 2005

pff ... bon ben je suis dégouté, dommage ... je rentre dimanche soir ...
Afficher les 23 commentaires

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.