Eric MILLOZ © 2001-2017
IntegSite - Génération de formulaires
Eric MILLOZ © 2001-2017
Sommaire
1 - Fonctionnement du générateur de formulaire
2 - Formulaire partir d'un fichier (sans base de données):
3 - Formulaire à partir d'une table contenue dans la base de donnes :
4 - Exemple make
1 - Fonctionnement du générateur de formulaire
Le but de cette fonctionnalité est d'aider la création de formulaire. Les formulaires sont décrit par vous à l'aide d'un fichier, puis le logiciel construit le formulaire guidé par la description.
Il y a 2 moyens de générer un formulaire, par un fichier descriptif texte et/ou à partir de la base de données, soit un mixe des 2 :
La fonction génère le formulaire à partir d'une table de la base de données.
La fonction génère les formulaires à partir d'un fichier texte qui décrit les champs sans base de données.
Le plus souvent, le besoin d'un formulaire provient de l'utilisation d'une table de la base de donnes. Cette fonctionnalité va permettre de générer du code PHP pour réaliser les formulaires se basant sur les informations provenant d'une table MySQL nommée.
Le fichier peut décrire aussi des champs pour constituer un formulaire dans un fichier PHP.
On peut mixer les 2, indiquer une table pour faire le formulaire et surchargé les champs pour obtenir plus de souplesse dans la création.
Le fichier descriptif d'un formulaire est toujours un fichier texte.
Vous pouvez télécharger cet exemple en bas de cette page, ou en cliquant ici.
2 - Formulaire partir d'un fichier (sans base de données):
Vous allez créer un fichier descriptif qui va décrire chaque champs de votre formulaire. La description terminée, IntegSite va convertir le fichier texte en fichier PHP au format HTML 5 et avec du code permettant de faire fonctionner le formulaire.
Un fichier de log vous décrira les éventuels problèmes rencontrés lors de la création. Le fichier de log aura le même nom que le nom de votre fichier descriptif.
Exemple du fichier descriptif :
# FICHIER (sans extension) omise alors ERREUR
FICHIER=client.php
#
# ***************************************************************
#
# CHAMP donnée technique pour PHP (nom du champ dans le formulaire
CHAMP=nom
# Type de champ (donnée HTML)
INPUTTAG=input
# Exemple qui apparaîtra dans le champ avant saisie. Comme un exemple des données a saisir
INDICE=Votre nom
# LIBELLE apparaissant dans le formulaire, intitulé du champ
LIBELLE=Nom
# TYPE du champs TEXT ou , PASSWORD,FILE,CHECKBOX,RADIO,SELECT.
TYPE=TEXT
# LONGUEUR du champ (Si non précisé à la déclaration, la longueur sera 20)
LONGUEUR=20
# OBLIGATOIRE (O/N) (Contrôle en html5)
OBLIGATOIRE=N
# Expression régulière (exemple ici que des chiffres séparé par des espaces)
PATTERN=^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$
# Si ce champ doit avoir le focus en premier
AUTOFOCUS=O
#Si le champ est visible ou pas.. on peut déactiver ce champs, il n’apparaîtra pas dans le formulaire. (par défaut O)
VISIBLE=O
FINDEF
# champ suivant
CHAMP=Commentaire
# Type de champ
INPUTTAG=input
# Exemple qui apparaîtra dans le champ avant saisie.
INDICE=Votre Commentaire
LIBELLE=Commentaire
TYPE=TEXTEAREA
# nombre de colonne de la boite de saisie.
COL=20
# nombre de ligne de la boite de saisie.
ROW=20
# Si le texte dans la boite de saisie doit être wrapper (ramener sur la même ligne) ou pas.
WRAP=O
FINDEF
#
CHAMP=civS
LIBELLE=Civilité SELECT
TYPE=SELECT
ELEMENTS=M.,Monsieur;
ELEMENTS=*Mme,Madame;
ELEMENTS=Melle,Mademoiselle;
LONGUEUR=20
OBLIGATOIRE=N
FINDEF
#
CHAMP=civRADIO
LIBELLE=Civilité RADIO
TYPE=RADIO
ELEMENTS=Radio1,radio1;
ELEMENTS=*Radio2,case radio 2;
ELEMENTS=Radio3,case radio3;
LONGUEUR=20
OBLIGATOIRE=N
FINDEF
Les lignes commençant par # sont des commentaires.
Paramètres :
Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324
Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 TAG Signification Exemples : Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 CHAMP le nom technique du champ du formulaire. CHAMP=Nom du champs, nom prénom , etc... Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 INPUTTAG désigne le type d'input du champ (text, textarea, ..) INPUTTAG=TEXT (ou textarea) Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 INDICE permet de faire afficher dans le champ un indice de contenu. INDICE=Vous devriez taper ici votre code postal Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 LIBELLE sera le texte devant le champs à saisir. LIBELLE=Saisissez votre nom : Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 TYPE est le type de champ, par défaut c'est TEXT TYPE=TEXT ou PASSWORD ou FILE ou CHECKBOX ou RADIO ou SELECT. Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 LONGUEUR est la longueur par défaut, cette caractéristique ne sera pas utilisé si non mentionné LONGUEUR=20 (la case du champs fera 20 caractères de log) Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 ELEMENTS c'est les éléments d'un champ multi-entrée, RADIO, SELECT, ...
# utilisé avec le TYPE=CHECKBOX ou RADIO ou SELECT.ELEMENTS=M.,Monsieur Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 ELEMENTS= Liste les éléments :
# ici une étoile pour que cet élément soit affiché par défaut.
ELEMENTS=*Mme,Madame
ELEMENTS=Melle,MademoiselleWarning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 OBLIGATOIRE demande un contrôle PHP pour valider que le champ doit être obligatoire. OBLIGATOIRE=O (ou N, par défaut N) Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 COL, ROW et WRAP ne fonctionne qu'en présence de TYPE=TEXTAREA #Pour un pavé de saisie de 80 colonnes de large, 10 de haut, avec Wrapping.(rattache la suite de la phrase sur la ligne suivante.)
COL=80
ROW=10
WRAP=O
Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 PATTERN est une spécificité HTML5, basé sur les expressions régulières # un script qui permet de formater un saisie ici, cinq lettres
< input type="text" name="country_code" pattern="[A-Za-z]{5}" title="5 caractères" >Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 AUTOFOCUS permet, au chargement de la page, de placer le focus sur le champ défini. AUTOFOCUS=O (ou N, par défaut N) FINDEF indique que le descriptif du champ est terminé, les infos suivante concerne le champ suivant s'il existe. FINDEF
3 - Formulaire à partir d'une table contenue dans la base de donnes :
Vous avez une base de données et vous aimeriez qu'une table ou plusieurs, soient traduites en formulaire.
Il faudra modifier le fichier de configuration pour que IntegSite puisse lire les informations de la table pour générer les champs de saisie.
Accès base de données
Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324
Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 Variables Valeurs possibles Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 HOST Le nom DNS ou l'ip de votre serveur MySQL ou si votre MySQL est sur votre PC, localhost Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 DATABASE Le nom de la base de données. Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 USER Le utilisateur ici ce sera toujours root ou un autres utilisateurs qui aura tous les droits sur la base de données. MDP Le mot de passe de ce super utilisateur.
Je vous conseille de créer un répertoire formulaire au même niveau que le répertoire sources. Dans ce répertoire, vous y mettrez les fichiers .form et les fichiers .bat spécifique à chaque formulaires.
Le fichier descriptif de formulaire doit être un peu diffèrent de celui sans table.
# FICHIER (sans extension) omise alors ERREUR
FICHIER=client.php
# TABLE formulaire basé sur cette table
TABLE=TEST
#
# ***************************************************************
#
# CHAMP donné technique pour PHP
CHAMP=nom
# LIBELLE apparaissant dans le formulaire sinon précisé, cela sera le commentaire du champ
LIBELLE=Nom
# TYPE du champs sera la longueur du champ de la table
# LONGUEUR du champ sera la longueur du champ de la table
OBLIGATOIRE=N
VISIBLE=O
FINDEF
# champ suivant
CHAMP=Prenom
LIBELLE=Prénom
TYPE=TEXT
LONGUEUR=20
OBLIGATOIRE=N
VISIBLE=O
FINDEF
Seuls les champs indiqués dans le formulaire seront traités par IntegSite. Si l'étiquette LIBELLE n'est pas présente, c'est le commentaire du champ de MySQL qui sera affiché. (j'ai choisi de me servir de l'attribut commentaire de la base MySQL pour y stocker le libellé du champs. Exemple : pour le champ nom, le commentaire du champ sera "Nom:") Le paramètre VISIBLE, permet d'afficher ce champ dans le formulaire. Avec la valeur N (Non) le champ ne s'affichera pas (Champ Id par exemple). Le paramètre LONGUEUR sera extrait de la base de données pour que le champ de saisie soit de la longueur de champ de la base de données. Le paramètre OBLIGATOIRE permet d’empêcher le formulaire d'être validé si le champ est vide. c'est une fonctionnalité HTML 5 Le paramètre FINDEF permet d'indiquer que l'on change de champ.
Il suffit d'indiquer à IntegSite la table utilisée pour construire le formulaire. La table entière sera traduite avec tous ses champs sauf indication contraire.
Les descriptifs contenus dans le fichier texte vont modifier la façon dont le logiciel va traiter le formulaire. Les précisions permettent de rajouter ou faire disparaître des champs. on peut surcharger les attributs des champs de la base de données.
Vous pouvez utiliser aussi un fichier descriptif qui va indiquer IntegSite les champs que vous voulez rajouter, enlever ou modifier dans le formulaire. Vous pouvez modifier le libellé du champ, sa longueur, le type de champ, les éléments qui le compose (pour les boutons radio).
Exemple :
La table Test définie comme telle :
Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324
En indiquant cette table, IntegSite va créer un formulaire pour permettre la création, suppression et modification d'un enregistrement de cette table.Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 Champs Type de champs Commentaire Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 Id BigInt (Primary) Identifiant Warning: Undefined variable $debutTableau in /volume1/web/www/inc/all.php on line 324 nom varchar(50) Nom : prénom varchar(50) Prénom :
Le champ Id n'est pas visible dans le formulaire car c'est une clé primaire, il sera (hidden pour modification), mais on peut le rendre VISIBLE à l'aide du fichier descriptif.
Le fichier PHP généré contiendra, les instructions PHP de récupération POST des champs, la gestion de l'action de création, suppression et modification d'un enregistrement et le formulaire HTML.
Important : Quand on mixe les deux techniques, (table et surcharge) le nom du champ contenu dans le fichier descriptif doit être le même que celui de la base de données pour que le rapprochement puisse avoir lieu. (sinon, cela fera un champ supplémentaire.)
Il faudra intégrer et adapter ce formulaire en fonction de votre utilisation.
Commande
Dans le fichier de commande (sous Windows XP, pour Windows 7 et +, voir le fichier d'exemple en téléchargement.):
C:\Program Files\IntegSite\Integsite.exe -c Chemin_du_fichier_de_configuration -form Chemin_du_fichier_descriptif_du_formulaire.form
La commande '-form' permet de générer la construction du formulaire suivant le descriptif donné dans le fichier de configuration..
Exemple de formulaire généré (fichier descriptif texte) :
Pour les champs "civilité" en select et radio les informations sont :
#
LIBELLE=Civilité SELECT
CHAMP=civS
TYPE=SELECT
ELEMENTS=M.,Monsieur
# ici une étoile pour que cet élément soit affiché par défaut.
ELEMENTS=*Mme,Madame
ELEMENTS=Melle,Mademoiselle
LONGUEUR=20
OBLIGATOIRE=N
CONTROLEJS=N
FINDEF
#
LIBELLE=Civilité RADIO
CHAMP=civRADIO
TYPE=RADIO
ELEMENTS=Radio1,radio1
# ici une étoile pour que cet élément soit affiché par défaut.
ELEMENTS=*Radio2,case radio 2
ELEMENTS=Radio3,case radio3
LONGUEUR=20
OBLIGATOIRE=N
CONTROLEJS=N
FINDEF
Le script PHP, pour la gestion de ce formulaire, sera généré automatiquement pour permettre de gagner du temps et diminuer le nombre d'erreur à la création. Les créations sont ainsi standardisés et industrialisés, il reste encore du travail de mise en page.
Les fonctions générés permettent la création, la modification, et la suppression d'enregistrements, ce squelette de page peut servir pour faire la page finale de votre formulaire.
A chaque modification de base de données champs , longueur, type, etc.. , vous pouvez régénérer votre ISCLASS (classe de gestion de base de données) et votre formulaire en un clin d'oeil.
Le formulaire est en HTML5, les navigateurs sont de plus en plus compatible avec ce standard.
4 - Exemple make
Cliquer ici pour télécharger le fichier exemple monsite.zip
Décompresser dans votre lecteur D: (ou si vous n'en avez pas, adaptez le chemin dans les fichiers .bat et .cfg)
Le fichier Form_exemple_W7.bat est pour Windows 7 et +.
Le fichier Form_exemple.bat est pour Windows XP.