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

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

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)