Tutoriel Coldfusion :le CFIF
Contrairement à nos autres tutoriels, les tutoriels sur Coldfusion seront axés uniquement sur du code. Je n’ai pas l’intension de vous apprendre ici, ce qu’un une boucle, une condition…
Dans ce tutoriel je vous présente différentes utilisations du CFIF … LE ColdFusion IF.
Vous pouvez m’envoyer vos demandes pour ajouter d’autres exemples, ou pour tout problème en Coldfusion.
Voici l’environnement :
** Un serveur colfusion que vous pouvez télécharger gratuitement en version développeur sur le site d’Adobe (http://www.adobe.com/fr/products/coldfusion-family.html)
** Une base de données Mysql qui contient 2 tables
La table adresse ( id (int 1 AI), rue (varchar 25), id_personne (int 1) )
La table table1 (id (int 1 AI), nom (varchar 25), prenom (varchar 25))
…. remplir ces tables avec au minimum 2 lignes chacune.
** 2 fichiers
1 fichier tuto.cfm ==> situé dans C:\ColdFusion10\cfusion\wwwroot\test
1 fichier test.cfc ==> situé dans C:\ColdFusion10\cfusion\wwwroot\test\cfc
remplir chaque table de minimum 2 lignes
Exemple 1 – pas de cfc
[cf] <!—fichier tuto.cfm—>
<cfform action="tuto.cfm?id=1">
<cfquery name="test1" datasource="test"> <!—la query avec la datasource à créer dans coldfusion admin. datasource dirigée vers votre db.—>
SELECT id,nom,prenom, ‘1’ as orders FROM TABLE1
</cfquery>
<cfset QueryAddRow(test1)/> <!—ajout d’une ligne dans la db. il est aussi possible de le faire directement en sql..—>
<cfset QuerySetCell(test1, "orders","0")/> <!—mais ceci vous permet de voir le code assez utile—>
<cfset QuerySetCell(test1, "nom ","")/>
<cfset QuerySetCell(test1, "prenom", "")/>
<cfquery name="test1" dbtype="query"> <!—cette seconde query permet de classer sur le champ ‘dynamique’ orders—>
select * from test1
order by orders, nom
</cfquery>
<cfselect name="MONSELECT" query="TEST1" Display="nom" value="id"></cfselect>
</cfform>
[/cf]
Exemple 2 – utilisation d’un fichier cfc
[cf] <!—fichier tuto.cfm —>
<cfselect name="MONSELECT2" bind="cfc:cfc.test.Ftest()" Display="nom" value="id" bindonload="true"></cfselect>
[/cf]
[cf]
<cfcomponent>
<cffunction name="Ftest" access="remote" returntype="query"> <!—la 1ere fonction qui renvoie la query—>
<cfquery name="test2" datasource="test">
SELECT id,nom,prenom, ‘1’ as orders FROM TABLE1
</cfquery>
<cfset QueryAddRow(test2)/> <!—même explication que l’exemple 1 —>
<cfset QuerySetCell(test2, "orders","0")/>
<cfset QuerySetCell(test2, "nom ","")/>
<cfset QuerySetCell(test2, "prenom", "")/>
<cfquery name="test2" dbtype="query">
select * from test2
order by orders, nom
</cfquery>
<cfreturn test2>
</cffunction>
<cffunction name="Fadresse" access="remote" returntype="query"> <!—la seconde fonction qui reçoit en paramètre la value du 1er cfselect —>
<cfargument name="id" default="" >
<cfquery name="Qadresse" datasource="test">
SELECT * from adresse
where id_personne = ‘#arguments.id#’
</cfquery>
<cfreturn Qadresse>
</cffunction>
</cfcomponent>
[/cf]
Exemple 3 – lier 2 cfselect utilisation d’un fichier cfc (le même)
le fichier cfc reste identique dans tous les cas où il est utilisé… je ne le recopie pas
[cf]
<cfselect name="MONSELECT3" bind="cfc:cfc.test.Ftest()" Display="nom" value="id" bindonload="true"></cfselect> <!—le bind + les cffonction en : access="remote" correspond à l’ajax—>
<cfselect name="MONadresse" bind="cfc:cfc.test.Fadresse({MONSELECT3})" Display="rue" value="id" ></cfselect> <!—dans le bind les paramètres correspondant à des noms de champs de formulaire sont passés entre {} —>
[/cf]
Dans le 2eme cfselect, je passe la valeur du 1er (le value) qui est aussi l’id de la table : TABLE1.
Exemple 4 – un simple cfselect . pas d’utilisation d’un fichier cfc
[cf]
<cfselect name="MONSELECT4" query="TEST1" Display="nom" value="id" selected="2"></cfselect>
<!—l’élément dont le value correspond à 2 est sélectionné ==> sélected="2"—>
[/cf]
Exemple 5 – un simple cfselect . pas d’utilisation d’un fichier cfc
[cf]
<cfif not isdefined("url.id")>
<cfset url.id = "0">
</cfif>
<cfselect name="MONSELECT5" query="TEST1" Display="nom" value="id" selected="#url.id#"></cfselect>
<cfinput name="submit" type="submit">
[/cf]
Au submit la page est renvoyée sur elle même avec un paramètre d’url ==> action= »tuto.cfm?id=1″>
le cfselect lit le paramètre et la donnée ayant l’id 1 est selectionnée ==> selected= »#url.id# »
——————————————————————————————————————–
N’hésitez pas à demander d’autres exemples….