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_Send = adresse_email du destinataire [facultatif] [facultatif] si présent: on envoie le résultat du formulaire à ce destinataire P_PagesEnum = 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_DirectoryDownload = 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 qu'une option a été choisie dans le champ "Select_CheckBox_1" ce champ n'ayant pas de champ message associé. - 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 : FormsPage(_PAGE_); if (!$ObjForm->AlreadyInitialized()) { //Déclaration des champs (cf LES OBJETS CHAMPS DE FORMULAIRES) Add_Text pour les champs de type texte Add_Select pour les champs de type select Add_Radio pour les champs de type radio Add_Button pour les champs de type button Add_CheckBox pour les les champs de type checkbox ('Nom du champ',tableau des paramètres du champ, tableau des paramètres du champ texte message associé = FALSE); Ces fonctions retourne soit TRUE si correct soit FALSE si erreur (dans ce cas la nature de l'erreur est précisée dans GetMsg() .../... } ?> <?php echo $Daemon->GetTitlePage(_PAGE_); ?> 2) Le lancement du formulaire doit respecter la syntaxe ci-dessous: StartForm(_PAGE_); ?> 3) Affichage des champs TextHTML("Mon_nom_de_champ"); ?> pour affichage du champ TextHTMLMsg("Mon_nom_de_champ"); ?> pour affichage du champ message associé etc ... 4) Fin du formulaire EndForm(); ?> 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 *2 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' , 'page_2.php' , contact.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" ---------------------------------------------------------------------------------- *3 Les sélections à afficher (pour les Obj_Select) La création d'objects sélection: new Obj_List 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: $List = array( new Obj_List("","","Select_1"), new Obj_List("","","Select_2"), new Obj_List("","","Select_3",TRUE) ); $List = array( new Obj_List("Première Liste","","Select_1"), new Obj_List("","","Select_2"), new Obj_List("Deuxième Liste","","Select_3",TRUE), new Obj_List("","","Select_4") ); Dans ce cas: la key "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. ---------------------------------------------------------------------------------- *4 Les choix à afficher (pour les Obj_CheckBox et Obj_Radio La création d'objects sélection: new Obj_Choice 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: $Choice = array( new Obj_Choice("Mr",TRUE,"Mr","left"), new Obj_Choice("Mme",FALSE,"Mme","left"), new Obj_Choice("Mlle",FALSE,"Mlle","left") ); $Choice = array( new Obj_Choice("M",TRUE), new Obj_Choice("F") ); ---------------------------------------------------------------------------------- SYNOPTIQUE DES PARAMETRES POUR LES FONCTIONS DE CREATION DE CHAMP: LES VALEURS ENTRE '[' et ']' SONT LES VALEURS PAR DEFAUT LES CASES CONTENANT 'not' DESIGNENT UNE key NON AUTORISEE key | button | checkbox | radio | select | text | ---------------|--------------|--------------|--------------|--------------|--------------| nature | [input] | not | not | not | [input] | | button | | | | textarea | ---------------|--------------|--------------|--------------|--------------|--------------| type | [button] | | | | ['Text'] | | submit | not | not | not | 'password' | | reset | | | | | ---------------|--------------|--------------|--------------|--------------|--------------| valueinit | texte du | not | not | not | texte | | button | | | | initial | ---------------|--------------|--------------|--------------|--------------|--------------| | not | not | not | Nombre de | Max | size | | | | sélections | Min | | | | | affichées | | ---------------|--------------|--------------|--------------|--------------|--------------| format | not | not | not | not | ['s'] | | | | | | 'e' | | | | | |'aaaa-mm-jjj' | ---------------|--------------|--------------|--------------|--------------|--------------| style | style du | style du | style du | style du | style du | | champ | champ | champ | champ | champ | ---------------|--------------|--------------|--------------|--------------|--------------| accesskey | raccoursi | not | not | not | not | | clavier | | | | | ---------------|--------------|--------------|--------------|--------------|--------------| list | not | Liste des | Liste des | Liste des | not | | | choix | choix | choix | | ---------------|--------------|--------------|--------------|--------------|--------------| multiple | not | [FALSE]/TRUE | not | [FALSE]/TRUE | not | | | sélections | | sélections | | | | mulitples | | multiples | | ---------------|--------------|--------------|--------------|--------------|--------------| optional | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | ---------------|--------------|--------------|--------------|--------------|--------------| disable | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | ---------------|--------------|--------------|--------------|--------------|--------------| readonly | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | [FALSE]/TRUE | ---------------|--------------|--------------|--------------|--------------|--------------| javascript | Fonctions | Fonctions | Fonctions | Fonctions | Fonctions | | JavaScript | JavaScript | JavaScript | JavaScript | JavaScript | ---------------|--------------|--------------|--------------|--------------|--------------| id | facultatif | facultatif | facultatif | facultatif | facultatif | ---------------|--------------|--------------|--------------|--------------|--------------| exemples: - création d'un champ 'textarea', maximum de 750 caractères, facultatif, 20 lignes et 50 colonnes avec un champ de message d'erreur associé Add_Text ("Nom_Champ", array("nature"=>"textarea","size"=>750,"optional"=>TRUE, "style"=>"rows='20' cols='50'"), array()); - création d'un champ 'input' de texte', maximum de 40 caractères, obligatoire sans champ de message d'erreur associé Add_Text ("Nom_Champ", array("size"=>40)); ------------------------------------------------------------------------------- 1) CHAMP 'Obj_Text' RETURN si erreur 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 le format du champ - erreur sur key non autorisée FORMAT: "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 '/') EXEMPLES champ 'Nom', obligatoire, nombre de caractères compris entre 40 et 2 sans champ message associé $ObjForm->Add_Text("Nom",array("size"=> array(40,2)); champ 'Prenom', facultatif sans champ message associé if ($ObjForm->Add_Text("Prenom",array("optional" => TRUE));, champ 'Texte', obligatoire, nombre de caractères compris entre 1000 et 5 sur 50 colonnes et 10 lignes, avec champ de message associé contenant un avertissement sans champ message associé $ObjForm->Add_Text("Texte",array( "style" => "cols=\"50\" rows=\"10\" wrap=\"virtual\"", "nature" => "textarea", "size"=> array(1000,5)), array("value" => "essayez d'être concis"); champ 'Valeur' obligatoire , 4 chiffres entiers, 2 décimales, compris entre 9999 et -2000 sans champ message associé $ObjForm->Add_Text("Valeur" ,array("format" => "n####,##-,"size"=>array(9999,-2000)); champ 'Email' obligatoire avec message associé $ObjForm->Add_Text('Email') , array("format"=>"e"), array()); ------------------------------------------------------------------------------- 2) CHAMP 'Obj_Select' RETURN si erreur 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) - erreur sur key non autorisée EXEMPLES champ 'My_Selection', obligatoire, avec affichage de 2 sélections, sans champ message associé $ObjForm->Add_Select("My_Selection",array("list"=> $List, "size"=>2)); ------------------------------------------------------------------------------- 3) CHAMP 'Obj_Radio' RETURN si erreur 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 - erreur sur key non autorisée EXEMPLES champ 'My_Radio', obligatoire sans message associé $ObjForm->Add_Radio("My_Radio",array("list"=> $Choice)); ------------------------------------------------------------------------------- 3) CHAMP 'Obj_CheckBox' RETURN si erreur 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 - erreur sur key non autorisée EXEMPLES champ 'My_CheckBox', obligatoire sans message associé $ObjForm->Add_CheckBox("My_CheckBox",array("list"=> $Choice)); ------------------------------------------------------------------------------- 4) CHAMP 'Obj_Button' RETURN si erreur 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 - erreur sur key non autorisée EXEMPLES champ 'Continuer' sans message associé $ObjForm->Add_Button("Continuer", array("type" => "submit")); champ 'Retour' avec fonction JavaScript et avec le libellé 'Page Précédente' $ObjForm->Add_Button("Retour",array("value"=> "Page précédente", "javascript"=> array("onClick" => "GoPrevious"))); champ 'Graphic' sans message associé, avec une image $Image = "Retour par image"; $ObjForm->Add_Button("Graphic",array("nature" => "button", "value" => $Image)); -------------------------------------------------------------------------------