Génération/gestion de formulaire via fichier xml

3/5 (24 avis)

Snippet vu 14 422 fois - Téléchargée 19 fois

Contenu du snippet

!! LE ZIP EST DANS LE PREMIER COMMENTAIRE !!

Gestion automatique simple de formulaire via un fichier XML. Elle permet de ne pas se casser la tête avec les vérifications multiple qui servent a valider un formulaire. Il suffit d'ajouter les restrictions nécessaires a un champ pour qu'il soit vérifié automatiquement. C'est la première version. Je compte bien la mettre a jour dans peu de temps afin d'y rajouter un lien avec une base de données MySQL et permette de remplir un Combobox. Toute l'information est dans la suite, il y a même un fichier d'exemple dans le zip donc je vous laisse le découvrir.

Le génération du formulaire marche pas section donc dans votre fichier XML vos champs doivent être absolument en une balise <section> et </section>. Vous pouvez ajouter autant de section que vous le voulez, cela permet de mieux présenter votre formulaire en le divisant.

/* MISE A JOUR */
Lien avec la base de données établis. C'est encore basique mais ça permet de remplir un Combobox aisément. Il suffit de mettre la balise suivante :
<values source="TABLE:OPTION_ID:OPTION_VALUE:[WHERE]:[ORDER]" />

Exemple : <values source="sql_countries:ct_id:ct_name:[*]:[ct_name ASC]" />

[*] est un joker pour TOUS

Source / Exemple :


Fichier php "example-with-mysql.php"

<?php
require_once('lib/ctl.error.php');
require_once('lib/xml.form.php');
require_once('lib/ctl.mysql.php');

try {
	$ctlMySQL = ctlMySQL::getInstance();
	$ctlMySQL->connectToDb('YOUR_USERNAME', 'YOUR_PASSWORD', 'YOUR_DATABASE');
	$xmlForm = new xmlForm('example-with-mysql.xml');
	
	if($xmlForm->checkForm())
	{
		$e = new myException('Le formulaire est valide, on peut maintenant procéder a l\'enregistrement', 5, '', '');
		$e->showError();
		
		/*
		Entrez votre les actions nécessaire
		lorsque le formulaire est valide
		
		(Ex : Requête MySQL)

  • /
$xmlForm->clearForm(); // Comme la procédure a été complétée on peut effacer le formulaire // afin d'insérer un autre enregistrement. } } catch(myException $e) { $e->showError(); } echo $xmlForm->getCode(); ?> Fichier XML "example-with-mysql.xml" <form action="" name="test-form" method="POST"> <section label="Nouveau membre"> <input type="textbox" name="usr_lastname"> <label>Nom</label> <restriction>isAlpha</restriction> </input> <input type="textbox" name="usr_firstname"> <label>Prénom</label> <restriction>isAlpha</restriction> </input> <input type="textbox" name="usr_courriel"> <label>Courriel</label> <restriction>isEmail</restriction> <initialValue>example@domain.com</initialValue> </input> <input type="combobox" name="usr_sex"> <label>Sexe</label> <restriction>isNotNull</restriction> <values selected="-"> <value id="-">Non spécifié</value> <value id="m">Homme</value> <value id="f">Femme</value> </values> </input> <input type="combobox" name="usr_country"> <label>Pays</label> <restriction>isNotNull</restriction> <!--Les 2 derniers paramètres sont entre [] car ils peuvent contenir des espaces, c'est ma convention :P --> <!--TABLE:OPTION_ID:OPTION_VALUE:[WHERE]:[ORDER]--> <values source="sql_countries:ct_id:ct_name:[*]:[ct_name ASC]" /> </input> <input type="textarea" name="usr_description"> <label>Description</label> <restriction>isNotNull</restriction> </input> <input type="checkbox" name="usr_accept"> <label>J'accepte les termes et conditions</label> <restriction>isNotNull</restriction> </input> </section> </form> Le résultat est dans la capture d'écran.

Conclusion :


Les champs disponibles : Textbox, Combobox (ou Select), Textarea et Checkbox.

Les tags disponibles dans le fichier XML :

<name>NOM_DU_CHAMP</name>
Ce tag est indispensable au bon fonctionnement

<label>ETIQUETTE_DU_CHAMP</label>

<restriction>NOM_DE_LA_RESTRICTION</restriction>
Les restrictions disponibles : isAlpha, isNumeric, isOptional, isNotNull, isEmail, etc... (voir formValidator)

<initialValue>VALEUR_INITIALE</initialValue>
<class>NOM_DE_LA_CLASS_CSS</class>

Pour Combobox seulement
<values>
<value id="VALUE_ID">VALUE_TEXT</value>
...
</values>

A voir également

Ajouter un commentaire Commentaires
safae890 Messages postés 4 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 24 juin 2013
18 mai 2011 à 18:33
s'il vous plait j'ai besoin de ce même code en asp.net si quelqu'un peut m'aider c'est urgent
cs_Seven Messages postés 39 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 13 juillet 2009
13 juil. 2009 à 21:57
Merci Garno pour ta source, elle est fort intéressante ! mais je ne comprends pas pourquoi lorsque qu'on fait un foreach du $_POST :

foreach($_POST as $key=>$val) {
echo $allfields .= $key.'='.$val.'
';
}

cela m'affiche des doublons !!!!
Utilisateur anonyme
6 févr. 2009 à 13:50
Je trouve le travail et le script super bien faits. Dommage que cette source soit notée que seulement 5/10.

Up
Phoenix Messages postés 14 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 22 janvier 2009
22 janv. 2009 à 11:14
C'est difficil sans zip ... ou peut-on le télécharger ?

Merci
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
14 janv. 2009 à 00:46
En fait, cela veut dire que le formulaire est valide et que tu peux exécuter le code que tu veux exécuter lorsque le formulaire est envoyé et valide. Je donnais l'exemple d'une requête SQL mais tu peux faire absolument n'importeq quoi !

N'hésite pas a me poser plus de question soit en privé ou ici !

Bonne soirée

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.

Du même auteur (cs_Garno)