Recherche…


Remarques

Grand merci à

Faire le tour d'une collection à l'aide de balises CFML.

<!--- Define collection --->
<cfset attributes = {
  "name": "Sales",
  "type": "text",
  "value": "Connection"
}>

<!--- 
  cfloop tag with attribute collection can be used to 
  loop through the elements of a structure
--->
<cfloop collection=#attributes# item="attribute">
  <cfoutput>
    Key : #attribute#, Value : #attributes[attribute]#
  </cfoutput>
</cfloop>

Faire le tour d'une collection en utilisant CFSCRIPT.

<cfscript>
  /*define collection*/
  attributes = {
    "name": "Sales",
    "type": "text",
    "value": "Connection"
  };
  for(attribute in attributes){
    /* attribute variable will contain the key name of each key value pair in loop */
    WriteOutput('Key : ' & attribute & ', Value : ' & attributes[attribute] & '<br/>');
  }
</cfscript>

Indice

Paramètres

Attribut Champs obligatoires Type Défaut La description
indice vrai chaîne Nom de la variable pour l'index de la boucle. Par défaut à la portée des variables .
de vrai numérique Valeur de départ pour l'index.
à vrai numérique Valeur de fin pour l'index.
étape faux numérique 1 Valeur par laquelle augmenter ou diminuer l'index par itération.

Boucle d'indexation de base

La valeur finale de x est 10.

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="1" to="10">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 1; x <= 10; x++) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10

Augmenter le pas à 2

La valeur finale de x est 11.

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="1" to="10" step="2">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 1; x <= 10; x += 2) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 1
 - 3
 - 5
 - 7
 - 9

Décrémenter le pas de 1

La valeur finale de x est 0.

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="10" to="1" step="-1">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 10; x > 0; x--) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 10
 - 9
 - 8
 - 7
 - 6
 - 5
 - 4
 - 3
 - 2
 - 1

CFLoop dans une fonction

Veillez à var ou à local portée local l'index dans une fonction. Foo() renvoie 11.

<!--- var scope --->
<cffunction name="foo" access="public" output="false" returntype="numeric">
    <cfset var x = 0 />
    <cfloop index="x" from="1" to="10" step="1">
        <cfset x++ />
    </cfloop>
    <cfreturn x />
</cffunction>

<!--- Local scope --->
<cffunction name="foo" access="public" output="false" returntype="numeric">
    <cfloop index="local.x" from="1" to="10" step="1">
        <cfset local.x++ />
    </cfloop>
    <cfreturn local.x />
</cffunction>

ColdFusion 11 à travers le courant

La fonction cfloop ne prend pas en charge l' index tant que mécanisme de compteur autonome.

Condition

La syntaxe des balises

Paramètres

Attribut Champs obligatoires Type Défaut La description
condition vrai chaîne Condition qui gère la boucle. Ne peut pas contenir de symboles mathématiques tels que < , > ou = . Doit utiliser les implémentations de texte ColdFusion comme less than , lt , greater than , gt , equals ou eq .

La valeur finale de x est 5.

<cfset x = 0 />
<cfoutput>
    <cfloop condition="x LT 5">
        <cfset x++ />
        <li>#x#</li>
    </cfloop>
</cfoutput>

HTML généré

Cela aura également un saut de ligne entre chaque ligne de HTML.

<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>

CFScript

Précédent à ColdFusion 8

<cfscript>
x = 0;
while (x LT 5) {
    x = x + 1;
    writeOutput('<li>' & x & '</li>');
}
</cfscript>

ColdFusion 8 à travers le courant

<cfscript>
x = 0;
while (x LT 5) {
    x = x++;
    writeOutput('<li>' & x & '</li>');
}
</cfscript>

ColdFusion 11 à travers le courant

La fonction cfloop ne prend pas en charge la condition .

HTML généré

Notez que la sortie de cfscript est sur une seule ligne.

<li>one</li><li>two</li><li>three</li><li>four</li>

Date ou plage de temps

Exemple de plage de dates ou d'heures.

Question

Considérez la table dbo.state_zip , qui contient les colonnes city , statecode et zipcode et compte plus de 80 000 dossiers.

Paramètres

Attribut Champs obligatoires Type Défaut La description
question vrai chaîne Le nom de la variable d'un objet de requête.
Startrow faux numérique Index de la ligne de départ de l'objet de requête.
endrow faux numérique L'index de ligne de fin de l'objet de requête.
groupe faux chaîne Nom de la colonne de requête sur lequel regrouper les enregistrements.

Exemple de requête

<cfquery name="geo" datasource="reotrans-dev">
    SELECT city, stateCode, zipCode
    FROM dbo.state_zip
</cfquery>

La syntaxe des balises

Utiliser l'objet de requête geo comme source pour cfloop . Comme la table dbo.state_zip contient un si grand nombre d'enregistrements, le code HTML généré prendra un certain temps. Cet exemple montre uniquement la valeur HTML des 20 premiers enregistrements.

<cfoutput>
    <ul>
    <cfloop query="geo">
        <!--- Scope the column names with the query name. --->
        <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
    </cfloop>
    </ul>
</cfoutput>

HTML généré

<ul>
    <li>100 PALMS | CA | 92274</li>
    <li>1000 PALMS | CA | 92276</li>
    <li>12 MILE | IN | 46988</li>
    <li>1ST NATIONAL BANK OF OMAHA | NE | 68197</li>
    <li>29 PALMS | CA | 92277</li>
    <li>29 PALMS | CA | 92278</li>
    <li>3 STATE FARM PLAZA | IL | 61710</li>
    <li>3 STATE FARM PLAZA | IL | 61791</li>
    <li>30TH STREET | PA | 19104</li>
    <li>3M CORP | MN | 55144</li>
    <li>65TH INFANTRY | PR | 00923</li>
    <li>65TH INFANTRY | PR | 00924</li>
    <li>65TH INFANTRY | PR | 00929</li>
    <li>65TH INFANTRY | PR | 00936</li>
    <li>7 CORNERS | VA | 22044</li>
    <li>88 | KY | 42130</li>
    <li>9 MILE POINT | LA | 70094</li>
    <li>A A R P INS | PA | 19187</li>    
    <li>A A R P PHARMACY | CT | 06167</li>
    <li>A H MCCOY FEDERAL BLDG | MS | 39269</li>
</ul>

Limiter la sortie à des lignes spécifiques

Pour limiter la sortie de la requête à une plage de lignes spécifique, spécifiez startrow et endrow .

<cfloop query="geo" startrow="100" endrow="150">
    <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
</cfloop>

Regroupement des sorties

Dans les exemples de données, le même état est répertorié plusieurs fois par rapport aux multiples villes associées à chaque état. Vous pouvez également voir la même ville plusieurs fois par rapport aux multiples codes postaux associés à chaque ville.

Groupons d'abord la sortie par état. Notez la 2ème instance de cfloop entourant le contenu qui sera stateCode sous le contenu groupé stateCode .

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <!--- Scope the column names with the query name. --->
        <li>#geo.stateCode#
            <ul>
                <cfloop>
                    <li>#geo.city# | #geo.zipCode#</li>
                </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

HTML généré (extrait) à partir d'une balise cfloop groupée.

<ul>
    <li>AK
        <ul>
            <li>KONGIGANAK | 99545</li>
            <li>ADAK | 99546</li>
            <li>ATKA | 99547</li>
            <!-- etc. -->
        </ul>
    </li>
    <li>AL
        <ul>
            <li>ALEX CITY | 35010</li>
            <li>ALEXANDER CITY | 35010</li>
            <li>ALEX CITY | 35011</li>
            <!-- etc. -->
        </ul>
    </li>
    <!-- etc. -->
</ul>

Enfin, stateCode le résultat par stateCode , puis par city afin de voir toutes les entrées zipCode par ville. Notez que le 2ème cfloop est maintenant groupé par city et qu'un 3ème cfloop existe pour générer les données zipCode .

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <li>#geo.stateCode#
            <ul>
            <cfloop group="city">
                <li>#geo.city#
                    <ul>
                        <cfloop>
                            <li>#geo.zipCode#</li>
                        </cfloop>
                    </ul>
                </li>
            </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

HTML généré (extrait) à partir de deux balises cfloop groupées.

<ul>
    <li>AK
        <ul>
            <li>ADAK
                <ul>
                    <li>99546</li>
                    <li>99571</li>
                </ul>
            </li>
            <li>AKHIOK
                <ul>
                    <li>99615</li>
                </ul>
            </li>
            <!--- etc. --->
            <li>BARROW
                <ul>
                    <li>99723</li>
                    <li>99759</li>
                    <li>99789</li>
                    <li>99791</li>
                </ul>
            </li>
            <!--- etc. --->
        </ul>
    </li>
    <!--- stateCodes etc. --->
</ul>

CFScript

ColdFusion 6 (MX) en cours

<cfscript>
    for (x = 1; x LTE geo.recordcount; x = x + 1) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

ColdFusion 8 si actuel

<cfscript>
    for (x = 1; x <= geo.recordcount; x++) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

ColdFusion 10 si actuel

Avec la syntaxe FOR IN , x est un objet de ligne de requête, pas l'index de ligne.

<cfscript>
    for (x in geo) {
        writeOutput( '<li>' & x.city & ' | ' & 
            x.stateCode & ' | ' & x.zipCode & '</li>');
    }
</cfscript>

ColdFusion 11 si actuel

ColdFusion 11 permet à la plupart des balises d'être écrites en tant que scriptcfscript.

<cfscript>
    cfloop(query: geo, startrow: 1, endrow: 2) {
        writeOutput( '<li>' & geo.city & ' | ' & 
            geo.stateCode & ' | ' & geo.zipCode & '</li>');
    }
</cfscript>

Avec group

<cfscript>
    cfloop(query: geo, group: 'city') {
        writeOutput( '<li>' & geo.city & '<ul>');
        cfloop() { // no arguments, just as in the tag syntax.
            writeOutput('<li>'  & geo.zipCode & '</li>');
        }
        writeOutput('</ul></li>');
    }
</cfscript>

liste

Considérez cette liste:

<cfset foo = "one,two,three,four" />

La syntaxe des balises

Paramètres

Attribut Champs obligatoires Défaut La description
liste vrai Un objet liste. La variable doit être évaluée (enveloppée avec ##)
indice vrai L'élément actuel de la liste.
<cfoutput>
    <cfloop list="#foo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

HTML généré

Cela aura également un saut de ligne entre chaque ligne de HTML.

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

CFScript

Précédent à ColdFusion 8

<cfscript>
    for (x = 1; x LTE listLen(foo); x = x + 1) {
        writeOutput("<li>" & listGetAt(foo, x) & "</li>");
    }
</cfscript>

ColdFusion 8 à travers le courant

<cfscript>
    for (x = 1; x <= listLen(foo); x++) {
        writeOutput("<li>" & listGetAt(foo, x) & "</li>");
    }
</cfscript>

ColdFusion 9 à travers le courant

<cfscript>
    for (x in foo) {
        writeOutput("<li>" & x & "</li>");
    }
</cfscript>

ColdFusion 11 à travers le courant

La fonction cfloop n'a aucun support pour la list .

HTML généré

Notez que la sortie de cfscript est sur une seule ligne.

<li>one</li><li>two</li><li>three</li><li>four</li>

Tableau

La possibilité d'utiliser directement un objet array avec cfloop été ajoutée dans ColdFusion 8.

Considérez ce tableau;

<cfset aFoo = [
    "one"
    , "two"
    , "three"
    , "four"
] />

La syntaxe des balises

ColdFusion 8 à travers le courant

Utiliser l' index attribut par lui-même.

Paramètres

Attribut Champs obligatoires Défaut La description
tableau vrai Un objet tableau. La variable doit être évaluée (enveloppée avec ##)
indice vrai L'élément actuel du tableau.
<cfoutput>
    <cfloop array="#aFoo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

HTML généré

Cela aura également un saut de ligne entre chaque ligne de HTML.

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

ColdFusion 2016 à travers le courant

L'attribut item modifie le comportement de cfloop au Coldfusion 2016.

Utiliser l' item attribut au lieu de ou en plus de l' index .

Paramètres

Attribut Champs obligatoires Défaut La description
tableau vrai Un objet tableau. La variable doit être évaluée (enveloppée avec ##)
article vrai L'élément actuel du tableau.
indice faux L'index actuel du tableau.
<cfoutput>
    <cfloop array="#aFoo#" item="x" index="y">
        <li>#x# | #y#</li>
    </cfloop>
</cfoutput>

HTML généré

Cela aura également un saut de ligne entre chaque ligne de HTML.

<li>one | 1</li>
<li>two | 2</li>
<li>three | 3</li>
<li>four | 4</li>

CFScript

Précédent à ColdFusion 8

<cfscript>
for (i = 1; x LTE arrayLen(aFoo); i = i + 1) {
    writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>

ColdFusion 8 à travers le courant

<cfscript>
for (i = 1; i <= arrayLen(aFoo); i = i++) {
    writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>

ColdFusion 9 à travers le courant

Avec la syntaxe FOR IN , x est l'élément du tableau en cours, pas l'index du tableau.

<cfscript>
for (x in aFoo) {
    writeOutput("<li>" & x & "</li>");
}
</cfscript>

ColdFusion 11 à travers le courant

La fonction cfloop ne prend pas en charge le array .

HTML généré

Notez que la sortie de cfscript est sur une seule ligne.

<li>one</li><li>two</li><li>three</li><li>four</li>

Fichier

<cfloop list="#myFile#" index="FileItem" delimiters="#chr(10)##chr(13)#">
  <cfoutput>
   #FileItem#<br />
 </cfoutput>
</cfloop>

Structure

Considérez cette structure:

<cfset stFoo = {
    a = "one"
    , b = "two"
    , c = "three"
    , d = "foue"
} />

La syntaxe des balises

Paramètres

Notez l'utilisation de l' item attribut au lieu de l' index .

Attribut Champs obligatoires Type Défaut La description
collection vrai structure Un objet struct . La variable doit être évaluée (enveloppée avec ##).
article vrai chaîne La key structure actuelle,

Utilisation des fonctions de structure

<cfoutput>
    <cfloop collection="#stFoo#" item="x">
        <li>#structFind(stFoo, x)#</li>
    </cfloop>
</cfoutput>

Syntaxe de structure implicite

<cfoutput>
    <cfloop collection="#stFoo#" item="x">
        <li>#stFoo[x]#</li>
    </cfloop>
</cfoutput>

HTML généré

Cela aura également un saut de ligne entre chaque ligne de HTML.

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

CFScript

Avec la syntaxe FOR IN , x est une key de l'objet structure.

Affiche les clés de la structure

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & x & "</li>");
    }
</cfscript>

HTML généré

<li>A</li><li>B</li><li>C</li><li>D</li>

Affiche la valeur des clés de la structure

Utilisation des fonctions de structure

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & structFind(stFoo, x) & "</li>");
    }
</cfscript>

Syntaxe de structure implicite

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & stFoo[x] & "</li>");
    }
</cfscript>

ColdFusion 11 à travers le courant

La fonction cfloop ne prend pas en charge la collection .

HTML généré

Notez que la sortie de cfscript est sur une seule ligne.

<li>one</li><li>two</li><li>three</li><li>four</li>

Boucle d'index

Utilisez les attributs from et to pour spécifier le nombre d'itérations à effectuer. L'attribut d' step (facultatif) vous permet de déterminer la taille des incréments.

<cfloop from="1" to="10" index="i" step="2">
    <cfoutput>
        #i#<br />
    </cfoutput>
</cfloop>

Boucle conditionnelle

Vous utilisez l'attribut condition pour spécifier la condition à utiliser.

<cfset myVar=false>
<cfloop condition="myVar eq false">
    <cfoutput>
    myVar = <b>#myVar#</b>  (still in loop)<br />
 </cfoutput>
    <cfif RandRange(1,10) eq 10>
        <cfset myVar="true">
    </cfif>
</cfloop>
<cfoutput>
    myVar = <b>#myVar#</b> (loop has finished)
</cfoutput>

Boucle de requête

Vous pouvez parcourir en boucle les résultats d'une requête ColdFusion.

<cfquery name="getMovies" datasource="Entertainment">
    select top 4 movieName
    from Movies
</cfquery>
<cfloop query="getMovies">
    #movieName#
</cfloop>

Boucle de liste

Vous pouvez utiliser l'attribut delimiters (facultatif) pour spécifier les caractères utilisés comme séparateurs dans la liste.

<cfloop list="ColdFusion,HTML;XML" index="ListItem" delimiters=",;">
    <cfoutput>
        #ListItem#<br />
    </cfoutput>
</cfloop>

Boucle de fichier

Vous pouvez parcourir en boucle un fichier.

<cfloop file="#myFile#" index="line">
    <cfoutput>
        #line#<br />
    </cfoutput>
</cfloop>

Boucles COM Collection / Structure

Vous pouvez effectuer une boucle sur une collection Structure ou COM.

<cfset myBooks = StructNew()>
<cfset myVariable = StructInsert(myBooks,"ColdFusion","ColdFusion MX Bible")>
<cfset myVariable = StructInsert(myBooks,"HTML","HTML Visual QuickStart")>
<cfset myVariable = StructInsert(myBooks,"XML","Inside XML")>
<cfloop collection="#myBooks#" item="subject">
    <cfoutput>
        <b>#subject#:</b> #StructFind(myBooks,subject)#<br />
    </cfoutput>
</cfloop>


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow