cfloop タグを使用して、クエリオブジェクトをループしたり、レコードのセットをグループ化したり、オブジェクトをループするに従ってクエリオブジェクトを変更したりします。
説明
クエリに対するループは、クエリ レコードセット 内のレコードごとに実行されます。結果は cfoutput タグと同様です。ループが繰り返されるごとに、現在行の列が出力されます。この cfloop タグは、 cfoutput タグ内で使用できないタグをループします。
シンタックス
<cfloop query = "query name" startRow = "row number" endRow = "row number" group = "Query column"> </cfloop>
関連項目
属性
属性 |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
query |
必須 |
|
ループを 制御するためのクエリです。query 属性を使用する場合に、文字列の使用に加えて、次のコードに示すような動的な参照を使用できるようになりました。
<cfloop query="#getEmployees()#">
|
startRow |
オプション |
|
ループに含める クエリの最初の行です。 |
endRow |
オプション |
|
ループに含めるクエリの最後の行です。 |
group |
オプション |
|
レコードのセットをグループ化するために使用するクエリ列です。データをソートする場合、隣り合う重複行は削除されます。1 つ以上のクエリ列で順序付けられたレコードセットを取得した場合に使用します。例えば、レコードセットが「Customer_ID」に従って順序付けられている場合は、「Customer_ID」に関する出力をグループ化できます。 |
例
<cfscript> myQuery = queryNew("id,name,amount","Integer,Varchar,Integer", [ {id=1,name="One",amount=15}, {id=2,name="Two",amount=18}, {id=3,name="Three",amount=32} ]); </cfscript> <cfloop query = "myQuery"> <cfoutput>#id#.#name#</cfoutput> <br/> </cfloop>
<cfscript> myQuery = queryNew("id,name,amount","Integer,Varchar,Integer", [ {id=1,name="One",amount=15}, {id=2,name="Two",amount=18}, {id=3,name="Three",amount=32}, {id=4,name="Four",amount=37}, {id=5,name="Five",amount=79}, {id=6,name="Six",amount=26} ]); </cfscript> <cfset Start = 3> <cfset End = 6> <cfloop query = "myQuery" startRow = "#Start#" endRow = "#End#"> <cfoutput>#name# #amount#</cfoutput> </cfloop>
出力
Three 32 Four 37 Five 79 Six 26
レコードがなくなるか、現在のレコードのインデックスが endRow 属性の値を上回ると、ループは停止します。次の例では、cfinclude タグを使用して、ページ名リストのクエリによって返されたページ群を 1 つのドキュメントに結合します。
<cfquery name = "GetTemplate" dataSource = "Library" maxRows = "5"> SELECT TemplateName FROM Templates </cfquery> <cfloop query = "GetTemplate"> <cfinclude template = "#TemplateName#"> </cfloop>
cfloop でのグループの使用
次の方法でグループ属性を使用できます。
cfloop
<cfquery name = "result" datasource="cfcodeexplorer"> SELECT ORDERID, CUSTOMERFIRSTNAME,STATE,CITY FROM ORDERS ORDER BY CITY </cfquery> <cfloop query="result" group="CITY"> <cfoutput> #result.CITY# <br/> </cfoutput> </cfloop>
cfoutput
<cfquery name = "result" datasource="cfcodeexplorer"> SELECT ORDERID, CUSTOMERFIRSTNAME,STATE,CITY FROM ORDERS ORDER BY CITY </cfquery> <cfoutput query="result" group="CITY"> #result.CITY# <br/> </cfoutput>
出力
<!--- Create the query object ---> <cfset names = queryNew("")/> <!--- Add the name column ---> <cfset queryAddColumn( names, "Name", "cf_sql_varchar", listToArray("John,James,Jason,Jared") )/> <!--- Add another column ---> <cfset queryAddColumn( names, "Salary", "cf_sql_integer", arrayNew(1) )/> <!--- Populate the Salary column with random values ---> <cfloop query="names"> <cfset names["Salary"][names.currentRow]=randRange(50000,90000)/> </cfloop> <!--- Dump the array result ---> <cfdump var="#names#"/>
出力
<cfset players = queryNew( "id, name, gender", "cf_sql_integer, cf_sql_varchar, cf_sql_varchar", [ [ 1, "Ronaldo", "Male" ], [ 2, "Messi", "Male" ], [ 3, "Sharapova", "Female" ], [ 4, "Serena W", "Female" ], [ 5, "Hamilton", "Male" ] ] ) /> <cfoutput> <cfloop query="players" group="gender"> <b>#players.gender#:</b> <cfloop> #players.name# <br/> </cfloop> </cfloop> </cfoutput>
出力
Male: Ronaldo
Messi
Female: Sharapova
Serena W
Male: Hamilton