Laurpierre
Messages postés4Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention18 septembre 2008
-
12 févr. 2007 à 18:02
Laurpierre
Messages postés4Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention18 septembre 2008
-
13 févr. 2007 à 13:43
Bonjour,
Je suis tout neuf sur cet site. Histoire de me faire baptisé, je propose un logiciel de gestion dynamique de formulaires en php (multi pages).
Ce logiciel est réalisé en php V5 ou V4 (un process 'generphp.exe' permet de passer de la version V5 en V4 et vice-versa). Il comporte quelques 1500 instructions (à vrai dire, je n'ai pas compté scrupuleusement, mais il est conséquent)
La principale contrainte est une lecture attentive de la documentation.
L'objectif est de réduire au maximum la programmation HTML. Les champs peuvent être initialisés soit dans la page, elle-même, soit dans le moniteur général.
Le contrôle de la saisie est implicite (facultatif? longueur maxi? caractères interdits? etc ...)
L'utilisateur peut ajouter sa fonction personnalisée pour les contrôles de cohérence entre les informations saisies dans les champs. Il peut aussi choisir d'envoyer les résultats par email.
Les champs peuvent être supprimés ou ajoutés dynamiquement en fonction des souhaits de l'utilisateurs.
Il est d'évidence que nombre d'améliorations sont à apporter, quant à la simplification d'utilisation!
ci-dessous, je joins la documentation:
DOCUMENTATION
POUR TESTER LES SCRIPTS Il FAUT CLIQUER SUR LE LIEN 'Exemples de script php'
IL EST POSSIBLE DE TELECHARGER LES SOURCES ET DE LIRE LA DOCUMENTATION
SUR L'ONGLET: "Téléchargement de fichiers (comptage)"
DANS UN MOIS, UNE NOUVELLE RELEASE (COMPETE) SERA DISPONIBLE EN TELECHARGEMENT.
LA VERSION ACTUELLE PROPOSE UN EXEMPLE DE FORMULAIRE AVEC PLUSIEURS PAGES.
----------------------------------------------------------------------------
LE SCRIPT 'Sample_More_Forms.php' PERMET DE TESTER UN FORMULAIRE SUR UNE OU PLUSIEURS PAGES
LES PARAMETRES:
P_Destinataire = adresse_email du destinataire [facultatif]
[facultatif] si présent: on envoie le résultat du formulaire à ce destinataire
P_ListPages = Liste des pages: (titre de la page=nom complet qui contient la page)
[facultatif] titre_page_1=path_and_namefile_page1|
titre_page_2=path_and_namefile_page2|...etc
P_RepertoryFile = Nom du fichier qui décrit les fichiers à télécharger (nécessaire)
P_Return = Nom_de_la_page_de_retour
[facultatif] si présent: on se connecte après l'éxecution de ce script
sur le Nom_de_la_page_de_retour
P_FuncUserControl = Nom_du_script_de controle_de cohérence_des_informations
[facultatif] Ce script est réalisé par l'user.
Il est appellé après la saisie d'informations
lorsque le souscripteur a validé la page ou la dernière page
Un exemple d'une telle fonction est décrit dans le script
'MyFuncUserControl.php'
- Il contrôle que le champ 'Prenom' [Page 1, champ 'Prenom']
n'est pas 'paul'
- Il met le champ 'Prenom' [Page 1, champ 'Prenom'] à 'Pierre'
si le champ 'Nom' [Page 1, champ'Nom'] est à 'laur'
- Il contrôle que la sélection 'Select_Liste_1' [Page 2,
champ'Select_Liste1'] doit être différente de 'Choix_2'
si la sélection 'Select_Liste_2' [Page 2, champ'Select_Liste2']
est 'Select_2'
- Il contrôle que, si le champ 'Prenom' [Page 1, champ 'Prenom']
commence par la lettre 'x', la sélection du champ 'Select_Liste_2'
[Page 2, champ'Select_Liste2'] n'est pas 'Select_3'
P_FuncUserSend = Nom_du_script_envoi_email
[facultatif] si présent: ce script est appellé après la saisie des informations
sur la dernière page, lorsque le souscripteur a validé la dernière page
Ce script remplace la procédure, par défaut d'envoi de script par e_mail
OBJECTIF
- Réduire au maximale l'écriture HTML, en utilisant les ressources du serveur.
- Rendre dynamique l'affichage des pages (modifiable en fonction des informations
saisies sur les pages précédentes)
.- A chaque champ de saisie, un champ message est associé.
Ce champ message contient des éventuels messages d'erreur ou des explications
fournies à l'utilisateur qui remplit le formulaire.
Les procédures sont réalisées pour être exécutées soit sous version php4 soit php5
Pour permettre une mise au point plus 'aisée' les instructions spécifiques php5 sont
mises en commentaires et vice versa pour les instructions spécifiques php4
Un outil ('generphp.exe' permet de passer d'une version à l'autre)
/////////////////////////////////////////////////////////////////////////////////////////////
La syntaxe:
1) un script de formulaire doit impérativement commencer par les instructions
ci-dessous (placées après la balise <head>:
<?php
//Création Object $Daemon
$Daemon = new Obj_DaemonForm(TRUE);
$ObjForm = &$Daemon->FormsPage(_PAGE_);
if (!$ObjForm->GetCountObjGet())
{ //Déclaration des champs (cf LES OBJETS CHAMPS DE FORMULAIRES)
.../...
}
?>
<title><?php echo $Daemon->GetTitlePage(_PAGE_); ?></title>
2) Le lancement du formulaire doit respecter la syntaxe ci-dessous:
</head>
4) Fin du formulaire
<?php echo $Daemon->EndForm(); ?>
</html>
5) L'utilisateur peut rajouter des fonctions Javascript.
Dans ce cas, il doit le notifier le type d'évènement et le nom du script
dans la déclaration du champ.
(cf LES OBJETS CHAMPS DE FORMULAIRE *4 Les Fonction Java Script)
////////////////////////////////////////////////////////////////////////////////////////
LES OBJETS CHAMPS DE FORMULAIRES
DANS TOUS LES CAS SI LA BALISE "size" EST PRESENTE DANS LE PARAMETRE 'style du champ '
MESSAGE, ELLE EST REMPLACEE PAR LA TAILLE REELLE DE LA LONGUEUR DU MESSAGE A AFFICHER
LES PAGES: 'page_1.php' ET 'page_2.php'
SERVENT D'EXEMPLES POUR L'UTILISATION DE CES FONCTIONS
*1 style
exemple "class="Nom_ de_la classe" size="##" col=`"##" " etc..
*2 Les Fonction Java Script exemple: $ArrayFunctionsJavaScript array ( "onKeyDown"> "CheckUpSizeString",
"onKeyUp" => "CheckUpSizeString",
"onChange" => "CheckUpValidChar"
-------------------------------------------------------------------------------
1) CHAMP 'GETTEXT'
RETURN
retourne l'index de l'objet ajouté
sinon retourne FALSE et $MyForm->AffichMsg() affiche la nature de l'erreur
Les erreurs possibles;
- nom du champ déjà utilisé
- erreur sur le type du champ
- erreur sur la nature du champ
- erreur sur le nombre maximal de caractères autorisés
- erreur sur le nombre minimal de caractères autorisés
- erreur sur l'attribut du champ
APPEL
$MyForm->AddObj_GetText(
PARAMETRES:
1=> style du champ 'MESSAGE' correspondant au champ 'GETTEXT'(*1) [par défaut ""]
2=> un contenu initial du champ 'MESSAGE' [par défaut ""]
3=> style du Champ 'GETTEXT' (*1) [par défaut ""]
4=> nom du champ 'GETTEXT' (name="nom_du_champ'
5=> Nature du champ 'GETTEXT' soit 'input' soit 'textarea' [par défaut 'imput']
6=> Type du champ 'GETTEXT'
"N" pour numérique
exemples:
"N" => valeur entière non limitée
"N####" => valeur entière sur 4 chiffres maxi
"N####-" => valeur entière (signée) sur 4 chiffres maxi
"N####.##-" => valeur (signée) sur 4 chiffres entier maxi et 2 décimales maxi
"N0.##-" => valeur décimale (signée) sur 2 chiffres maxi (pas d'entiers)
"N.-" => valeur entière et décimales (signée) sans limitation de chiffres
"S" pour string
"E" pour adresse e_mail
"AAAA-MM-JJ" => date ('-' ou ':' ou '/')
"MM-AAAA-JJ" => date ('-' ou ':' ou '/')
"JJ-MM-AAAA" => date ('-' ou ':' ou '/')
7=> TRUE si optionnel [par défaut FALSE]
8=> Nombre maximal de caractères autorisés [par défaut 'illimité']
9=> Nombre minimal de caractères autorisés [par défaut 'illimité']
10=> contenu initial du champ 'GETTEXT' [par défaut ""]
11=> attribut du champ 'GETTEXT'
peut-être 'text', 'password', etc.. [par défaut 'text']
12=> Tableau d'éventuelles fonctions Java Script(*2) [par défaut ""]
13=> ID du champ 'GETTEXT' (id="id_du_champ") [par défaut "nom du champ"]
)
-------------------------------------------------------------------------------
2) CHAMP 'SELECT'
RETURN
retourne l'index de l'objet ajouté
sinon retourne FALSE et $MyForm->AffichMsg() affiche la nature de l'erreur
Les erreurs possibles;
- nom du champ déjà utilisé
- nom du champ 'SELECT' non renseigné
- sélection multiple à FALSE et plusieurs options pré-sélectionées
- Taille du nombre de sélections affichée insuffisant pour permettre
d'afficher la dernière option sélectionée
- Taille supérieures aux nombre de lignes nécessaires
- le tableau, des sélections à afficher, n'est pas rempli
- Multiple est à FALSE, alors que plusieurs options sont pré-sélectionnées
- Size doit être supérieur à la dernière option préselectionnée
(pour être visible sur l'écran)
APPEL
$MyForm->AddObj_Select(
PARAMETRES:
1=> style du champ 'MESSAGE' correspondant au champ 'SELECT'(*1) [par défaut ""]
2=> un contenu initial du champ 'MESSAGE' [par défaut ""]
3=> style du Champ 'SELECT' (*1) [par défaut ""]
4=> nom du champ 'SELECT' (name="nom_du_champ'
5=> tableaux des sélections à afficher(*3)
6=> TRUE si sélection multiple [par défaut FALSE]
7=> taille du nombre de sélections affichées(*4) [par défaut 0]
8=> TRUE si optionnel [par défaut FALSE]
9=> Tableau d'éventuelles fonctions Java Script(*2) [par défaut ""]
10=> ID du champ 'SELECT' (id="id_du_champ") [par défaut "nom du champ"]
*3 les sélections à afficher
La création d'objects sélection: new Obj_OptSelect
Paramètres:
1=> $OptGroupLabel libellé pour regroupement de certaines options
peut être FALSE si fin de regroupement impératif
(Dans le cas contraire, les options sont regroupées
jusqu'au prochain libellé de regroupement)
2=> $OptGroupStyle string :attributs du design d'affichage du libellé
de regroupement d'options
3=> $Label; libellé de l'option, affiché
4=> $PreSelected; à TRUE si préselectionné
5=> $Value; valeur de l'option, si "" contient $Label
6=> $Style; string : attributs du le design d'affichage:
Exemple:
$Options = array( new Obj_OptSelect("","","Select_1"),
new Obj_OptSelect("","","Select_2"),
new Obj_OptSelect("","","Select_3",TRUE) );
$Options = array( new Obj_OptSelect("Première Liste","","Select_1"),
new Obj_OptSelect("","","Select_2"),
new Obj_OptSelect("Deuxième Liste","","Select_3",TRUE),
new Obj_OptSelect("","","Select_4") );
*4 $Size définit le nombre d'options à afficher. Si ce nombre est inférieur
au nombre global d'options (une liste déroulante est affichée
et une barre de défilement permet de faire défiler les options.
Si non renseigné (0): le contrôle prend toute la place (verticale)
dont il a besoin.
retourne l'index de l'objet ajouté
sinon retourne FALSE et $MyForm->AffichMsg() affiche la nature de l'erreur
Les erreurs possibles;
- nom du champ déjà utilisé
- nom du champ 'RADIO' non renseigné
- le tableau, des options, n'est pas rempli
- une option a une valeur non renseignée
- Libellé d'une option non renseigné et alignement Label précisé
- l'alignement, d'une option avec un libellé précisé, doit etre soit
'leftt' soit 'right'
- Une seule option peut être pré-sélectionnée (si plusieurs options pré-sélectionnées
APPEL
$MyForm->AddObj_Radio(
PARAMETRES:
1=> style du champ 'MESSAGE' correspondant au champ 'RADIO'(*1) [par défaut ""]
2=> un contenu initial du champ 'MESSAGE' [par défaut ""]
3=> style du Champ 'RADIO' (*1) [par défaut ""]
4=> nom du champ 'RADIO' (name="nom_du_champ'
5=> tableau des options à afficher (*6)
6=> TRUE si optionnel [par défaut FALSE]
7=> Tableau d'éventuelles fonctions Java Script(*2) [par défaut ""]
7=> ID du champ 'RADIO' (id="id_du_champ") [par défaut "nom du champ"]
*6 les options à afficher
La création d'objects sélection: new Obj_OptRadio
Paramètres:
1=> Valeur du bouton radio
2=> à TRUE si préselectionné
3=> Libellé du bouton radio. Si non renseigné,
ce libellé doit être placé dans le script par l'user
4=> si Libellé renseigné: doit être soit 'left' soit 'right'
pour indiquer si ce label doit être à gauche ou à droite du bouton
Exemple:
$MyArrayObj_OptRadio = array( new Obj_OptRadio("Mr",TRUE,"Mr","left"),
new Obj_OptRadio("Mme",FALSE,"Mme","left"),
new Obj_OptRadio("Mlle",FALSE,"Mlle","left") );
$MyArrayObj_OptRadio = array( new Obj_OptRadio("M",TRUE),
new Obj_OptRadio("F") );
-------------------------------------------------------------------------------
3) CHAMP 'CHECKBOX'
RETURN
retourne l'index de l'objet ajouté
sinon retourne FALSE et $MyForm->AffichMsg() affiche la nature de l'erreur
Les erreurs possibles;
- nom du champ déjà utilisé
- nom du champ 'CHECKBOX' non renseigné
- le tableau, des options, n'est pas rempli
- la valeur d'une option n'est pas renseignée
- Libellé d'une option non renseigné et alignement Label précisé
- l'alignement, d'une option avec un libellé précisé doit être 'left' ou 'right'
- Multiple doit être à TRUE puisque plusieurs options pré-sélectionnées
APPEL
$MyForm->AddObj_CheckBox(
PARAMETRES:
1=> style du champ 'MESSAGE' correspondant au champ 'RADIO'(*1) [par défaut ""]
2=> un contenu initial du champ 'MESSAGE' [par défaut ""]
3=> style du Champ 'CHECKBOX' (*1) [par défaut ""]
4=> nom du champ 'CHECKBOX' (name="nom_du_champ'
5=> tableau des options à afficher (*7)
6=> TRUE si optionnel [par défaut FALSE]
7=> Tableau d'éventuelles fonctions Java Script(*2) [par défaut ""]
8=> Multiple [par défaut TRUE]
9=> ID du champ 'RADIO' (id="id_du_champ") [par défaut "nom du champ"]
*7 les options à afficher
La création d'objects sélection: new Obj_OptCheckBox (
Paramètres:
1=> Valeur du bouton checkBox
2=> à TRUE si préselectionné
3=> Libellé du bouton CheckBox. Si non renseigné,
ce libellé doit être placé dans le script par l'user
4=> si Libellé renseigné: doit être soit 'left' soit 'right'
pour indiquer si ce label doit être à gauche ou à droite du bouton
Exemple:
$MyArrayObj_OptCheckBox = array(
new Obj_OptCheckBox("Rock",TRUE,"Rock","left"),
new Obj_OptCheckBox("Classique",FALSE,"Classique","left"),
new Obj_OptCheckBox("Jazz",TRUE,"Jazz","left") );
$MyArrayObj_OptCheckBox = array(
new Obj_OptCheckBox("Première compétence"),
new Obj_OptCheckBox("Deuxième compétence",TRUE),
new Obj_OptCheckBox("Troisème compétence") );
-------------------------------------------------------------------------------
4) CHAMP 'BUTTON'
RETURN
retourne l'index de l'objet ajouté
sinon retourne FALSE et $MyForm->AffichMsg() affiche la nature de l'erreur
Les erreurs possibles;
- nom du champ déjà utilisé
- nom du champ 'BUTTON' non renseigné
- Type du 'BUTTON' est incorrect
APPEL
$MyForm->AddObj_CheckBox(
PARAMETRES:
1=> style du champ 'MESSAGE' correspondant au champ 'RADIO'(*1) [par défaut ""]
2=> un contenu initial du champ 'MESSAGE' [par défaut ""]
3=> style du Champ 'BUTTON' (*1) [par défaut ""]
4=> nom du champ 'BUTTON' (name="nom_du_champ'
5=> type du champ ('button', 'reset', 'submit'
6=> valeur du champ 'BUTTON [par défaut "nom du champ"]
7=> Tableau d'éventuelles fonctions Java Script(*2) [par défaut ""]
8=> Action qui désigne une éventuelle image à afficher [par défaut ""]]
Dans ce cas la balise ' permet de rendre le champ 'BUTTON' muet (grisé) [par défaut FALSE]
10=> éventuel raccourci clavier pour simuler le click [par défaut ""]
11=> ID du champ 'RADIO' (id="id_du_champ") [par défaut "nom du champ"]
-------------------------------------------------------------------------------
J'attends votre sanction, si elle est mauvaise, j'ai vidé ma poubelle qui pourra recueillir ces sources.
Arrivederci,
Epoc22
Messages postés198Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention14 novembre 20081 13 févr. 2007 à 09:17
Euh je ne suis pas l'administrateur mais je me permet tout de même une suggestion : ici c'est un forum pour poser une question. Pour poster ce que tu a poster ici, va dans Ajouter une source (dans ton compte), c'est beaucoup mieux.
Cela dit, ne te sens pas offensé !
@++