TUTORIELS 
Introduction à ColdFusion
Conçu autour du CFML (ColdFusion Markup Language), simple d'accès mais puissant, ColdFusion est un langage "côté serveur" dédié à la construction d'applications web dynamiques.  (1er octobre 2001)
 

Comme le

Sans parler de performances pures (elles évoluent pour ces trois produits au fil des versions), ColdFusion tire son épingle du jeu grâce à sa syntaxe particulièrement simple, notamment pour la manipulation des bases de données, mais aussi grâce au nombre conséquent de fonctions dont il dispose. Son point faible : il n'est pas gratuit, ColdFusion est un produit Macromedia.

Si ColdFusion s'insère si facilement au coeur d'une page HTML c'est grâce au CFML (ColdFusion Markup Language). En effet, de part ses tags très similaires aux tags HTML, on peut considérer que ColdFusion "enrichit" le langage HTML au point de le rendre dynamique.

Les tags CFML de base

Voici au travers d'exemples simples les quelques tags de base du langage ColdFusion. (Note : L'ecriture en majuscules des tags est facultative).

Tout d'abord, deux façons de commenter ces sources :
<!--- Code non interprété par le serveur Coldfusion, invisible dans le source html--->
<!-- Code non interprété par le serveur Coldfusion, visible dans le source html-->

Pas vraiment plus compliqué : Assigner un nombre à une variable, puis l'afficher à l'écran :

<html>
<head>
<title>Exemple de code ColdFusion inséré dans du code HTML</title>
</head>
<body>

     <CFSET nb = 42>
     <CFOUTPUT>Valeur de nb : #nb#</CFOUTPUT>

</body>
</html>

Suite à ces premières lignes de code on note que <CFSET>, comme d'autres tags, n'a pas de "tag fermant", contrairement à <CFOUTPUT>. Lorsque vous souhaitez manipuler une valeur dynamique (ici "nb"), afin de l'afficher par exemple, vous devez la placer entre deux caractères "#". Ici, le tag <CFOUTPUT> sait qu'il doit interpréter "#nb#" mais pas "Valeur de nb :".

Nous souhaitons maintenant qualifier "nb" par rapport au nombre 100. Un traitement conditionnel s'impose :

<CFIF #nb# GT 100>
     nb est strictement supérieur à 100
<CFELSE>
     nb est strictement inférieur à 100
</CFIF>

GT signifie Greater Than (équivalent à ">"), il existe aussi GTE (Greater Than or Equal), et construits sur le même schéma, LT (Less Than) et LTE (Less Than or Equal).
Dans notre exemple, en conservant la valeur que nous avions donné à nb (42), nous obtenons à l'écran : "nb est strictement inférieur à 100".

Si le nombre de conditions à traiter est trop lourd pour des <CFIF> traditionnels, le <CFSWITCH> prend le relais :

<CFSET jdn = "developpeurs">

<CFSWITCH EXPRESSION=#jdn#>
     <CFCASE VALUE="developpeurs">
          Vous êtes sur le JDN developpeurs.
     </CFCASE>
     <CFCASE VALUE="solutions">
          Vous êtes sur le JDN solutions.
     </CFCASE>
     <CFDEFAULTCASE>
          Cette rubrique n'existe pas.
     </CFDEFAULTCASE>
</CFSWITCH>

Le <CFSWITCH> permet d'évaluer une expression et de la comparer aux cas prédéfinis par l'utilisateur. Si la valeur de l'expression ne correspond à aucune situation prévue, alors un cas par défaut est appliqué (facultatif).

Abordons maintenant la connexion à une base de données et l'exploitation des résultats d'une requête :

<CFQUERY NAME="ma_requete" DATASOURCE="ma_source">
     SELECT prenom
     FROM employes
     WHERE prenom LIKE 'J%'
     ORDER BY prenom ASC
</CFQUERY>

Nombre d'employés : <CFOUTPUT>#ma_requete.recordcount#</CFOUTPUT><br>
<CFOUTPUT QUERY="ma_requete">
    Prénom : #ma_requete.prenom#<br>
</CFOUTPUT>

On obtient à l'écran le nombre d'employés dont le prénom débute par la lettre "J" ainsi que leurs prénoms, classés par ordre alphabétique. Par exemple :

Nombre d'employés : 3
Prénom : Jean-Claude
Prénom : José
Prénom : Julien

<CFQUERY> est le tag utilisé pour se connecter à une source de donnée (à définir au préalable dans l'administrateur ColdFusion). La requête à exécuter doit se trouver entre les deux balises <CFQUERY>.
Afin de connaître le nombre de t-uples ramenés par la requête (ici les employés) nous pouvons utiliser l'instruction "recordcount".

Nous retrouvons dans l'exemple ci-dessus l'instruction <CFOUTPUT> mais cette fois-ci dotée d'une caractéristique supplémentaire. L'attribut "QUERY="ma_requete"" permet en effet de faire boucler le <CFOUTPUT> sur les résultats de la requête. Nous dénombrons trois employés, les trois prénoms vont donc être affichés.

La transmission de variables

Afin de pouvoir communiquer entre deux pages (ou même une seule grâce à un renvoi des informations) il nous faut maintenant aborder les différentes techniques de propagation de l'information sous ColdFusion. La transmission par URL et par formulaire constituent les deux principales façons de faire.

Afin de ne pas multiplier inutilement nos pages ColdFusion lors d'une transmission de variables, il est possible, pour de petits traitements (sous peine de perte de clarté) de transmettre les informations à une seule et même page.
Si par exemple nous souhaitons vérifier (sur la bonne foi de l'internaute) que son âge ne dépasse pas 26 ans, nous pouvons procéder ainsi :

     <CFIF not isdefined("form.passtwo")>
          <form name="age_check" method="post">
               Entrez votre âge : <input type="text" name="age" size=4 maxlength="2">
               <input type="hidden" name="passtwo">
         </form>
     <CFELSE>
          <CFIF #form.age# LT 26>
               Vous bénéficiez de la réduction "moins de 26 ans"
          <CFELSE>
               Désolé, vous ne bénéficiez pas de la réduction "moins de 26 ans"<br>
          </CFIF>
     </CFIF>

La fonction isdefined() teste si le champ "passtwo" est défini ou pas. Dans l'affirmative cela signifie que le formulaire a été envoyé, on peut donc tester la valeur de l'âge. Dans le cas contraire, le champ "passtwo" n'existe pas encore, le formulaire n'a pas été envoyé, on doit permettre à l'internaute d'indiquer son âge.
L'expression "form.age" est facultative mais par convention on indique, si besoin, la provenance d'une variable. Il en est de même pour la transmission suivante que nous allons aborder, la transmission par URL.

Nous souhaitons ici transmettre une variable "nb" de valeur 42, par URL, de la page "a.cfm" vers la page "b.cfm". Voici la marche à suivre :

(page "a.cfm")

<a href="b.cfm?nb=42">Vers la page b</a>

Pour récupérer cette valeur dans la page "b", rien de plus simple :

<CFOUTPUT>#url.nb#</CFOUTPUT

Afin de profiter au maximum des exemples de cette brève introduction sur ColdFusion, vous pouvez télécharger les versions d'essai du serveur ColdFusion ainsi que ColdFusion Studio (pour écrire votre code) sur le site de Macromedia. Pour plus d'informations sur ColdFusion, rendez-vous sur le site d'Allaire (Editeur de ColdFusion avant sa fusion avec Macromedia, les deux sites n'ont pas encore fusionné).

 
[ Arnaud Gadal, JDNet
 
Accueil | Haut de page