Google Chercher dans diml.org
[ english ]

Table des matières
La portée "FORM::"
Transformations standard
Transformations spéciales
Listes à sélection multiple
Entrées de type FILE (multipart/form-data)  Dernières infos
 Une application du composant  WCT_NEWS  
>> Haut de la page

DIML et formulaires

Comme le PHP, le DIML propose un mécanisme pour utiliser simplement les variables fournies par un formumlaire.

Le processeur DIML dispose des fonctionalités suivantes en matière de CGI :

  • Réception des paramètres CGI scalaires (champs texte, boîtes à cocher, boutons radio, listes à sélection unique)
  • Réception vectorielle des listes à sélection multiple
  • Réception des upload de fichiers (réception "multipart/form-data")

La portée "FORM::"

C'est la portée FORM:: qui permet d'accéder aux données issues de l'appel de formulaire précédent. Toutes les variables transmises sont disponibles AVANT traitement de la page DIML.

Par exemple, la page présente a reçu trois variables "lang", "section" et "order" :

<%%FORM::lang%%> fr
<%%FORM::section%%> 1
<%%FORM::order%%> 10

Les variables ont été CGI-décodées, c'est à dire que tout + a été transmuté en espace, et toute séquence composée d'un % et de deux chiffres de 0 à F (hexadécimal) convertie dans le caractère correspondant du jeu de caractère du document.

Pour la plupart des éléments de formulaire, le nom de la variable DIML produite dans l'espace FORM:: est le nom défini par l'attribut NAME de la balise d'élément.

Le démonstrateur qui suit vous permet d'élaborer des formulaire et de tester leurs retours DIML, il fonctionne en trois temps :

  1. Ecrivez le code (contenu de la balise <FORM>) du formulaire en HTML à tester. Vous pouvez également (et c'est le but !) faire figurer des appels aux variables DIML créées pour le formulaire.
  2. Cliquez sur le lien "interpréter" pour interpréter le formulaire, il s'exécute alors dans la fenêtre de droite. Les appels aux variables DIML du formulaire ne retournent alors aucune valeur, car ces variables n'ont pas encore été alimentées.
  3. Exécutez le formulaire. Il envoie ses valeurs et alimente les variables DIML correspondantes.

Consultez les paragraphes qui suivent pour des éléments complexes comme les listes à sélection multiples.


Interpréter

Transformations standard

Pour la plupart des éléments de formulaire, le DIML utilise l'attribut NAME pour fabriquer la variable DIML correspondante. La variable <%%FORM::NAME%%> contient alors la valeur de l'attribut VALUE.

Cette construction est valable pour les entrées de type TEXT, RADIO, CHECKBOX et TEXTAREA, conformes au spécifications de nommage du W3C, ainsi que pour les listes à sélection unique (mode par défaut), mais pas pour celles à sélection multiples.

Transformations spéciales

Listes à sélection multiple

Une liste est à sélection multiple si l'attribut HTML MULTIPLE est mentionné dans la balise SELECT :

<SELECT NAME=liste SIZE=5 MULTIPLE>
<OPTION VALUE=0> default </OPTION>
<OPTION VALUE=1> valeur 1 </OPTION>
<OPTION VALUE=2> valeur 2 </OPTION>
</SELECT>

Leur particularité est d'émettre plusieurs instance du paramètre CGI "liste", pour chaque valeur sélectionnée dans la liste (sélection multiple par Shift-clic ou Ctrl-clic).

La valeur d'arrivée des listes à selection multiple est stockée dans une structure vectorielle, qu'il est possible de défiler par l'appel vectoriel (voir Fabrication d'une variable vectorielle d'interface) correspondant :

<%%FORM::NAME[1]%%>

ou

<%%FORM::NAME[]%%>

dans un template.

Les valeurs individuelles de la sélection sont accessibles directement dans le tableau DIML FORM::NAME_opt, mais cet accès demande une connaissance plus approfondie des vecteurs DIML.

Le nombre de valeurs sélectionnées est stocké dans la variable FORM::NAME§C (sa présence indiquant la qualité multiple de la sélection), et définit la dimension du template FORM::NAME.

Entrées de type FILE (multipart/form-data)

Les entrées de type FILE sont particulières car, en plus du contenu VALUE de la balise INPUT, elles envoient le fichier représenté par cette valeur. Le DIML résoud ce cas par la création de deux variables :

  • Une variable dans la portée FORM:: portant le nom de l'élément INPUT de type FILE (cas général).
  • Une variable portant le nom de l'élément INPUT, dans une portée spéciale FILE:: contenant la valeur binaire du fichier.

L'exploitation de cette variable permettra un stockage de ce fichier sur le serveur.

L'atelier de démonstration ci-dessus peut être utilisé pour tester ces cas particuliers.

précédent sommaire suivant


All material is copyleft V.G. FREMAUX (EISTI France) 1999 to 2003 except explicitly mentioned