User Guide Cancel

cfoutput

 

Description

Displays output that can contain the results of processing ColdFusion variables and functions. Can loopover the results of a database query.

Category

Syntax

<cfoutput>
group = "query column"
encodefor= "encoding type"
groupCaseSensitive = "yes|no"
maxRows = "maximum rows to display"
query = "query name"
startRow = "start row"
</cfoutput>
<cfoutput> group = "query column" encodefor= "encoding type" groupCaseSensitive = "yes|no" maxRows = "maximum rows to display" query = "query name" startRow = "start row" </cfoutput>
<cfoutput>

group = "query column"

encodefor= "encoding type"

groupCaseSensitive = "yes|no"
maxRows = "maximum rows to display"
query = "query name"
startRow = "start row"

</cfoutput>
Note:

You can specify this tag's attributes in an attributeCollection attribute whose value is a structure. Specify the structure name in the attributeCollection attribute and use the tag's attribute names as structure keys.

See also

History

ColdFusion 4.5.0: Added the groupCaseSensitive attribute.

Attributes

Attribute

Req/Opt

Default

Description

group

Optional

 

Query column to use to group sets of records. Eliminates adjacent duplicate rows when data is sorted. Use if you retrieved a record set ordered on one or more a query columns. For example, if a record set is ordered on "Customer_ID" in the cfquery tag, you can group the output on "Customer_ID."

encodefor

Optional

 

Based on the value, encodefor will be invoked for each expression inside the cfoutput tag body except the expression which is already wrapped using encodefor function. Possible values are html , htmlattribute , url , javascript, css , xml , xmlattribute , xpath , ldap , and dn .

groupCaseSensitive

Optional

no

Boolean. Whether to consider the case in grouping rows.

maxRows

Optional

Displays all rows

Maximum number of rows to display.

query

Optional

 

Name of cfquery from which to draw data for output section.

startRow

Optional

1

Row from which to start output.

Note:

If you face any issues in line breaks, use  the <pre> tag wrapped inside cfoutput,. Then the new lines will show up in HTML.

For example,

<cfoutput>
    <pre>#variables.signature#</pre>
</cfoutput>

Usage

In the cfoutput tag body, ColdFusion treats text that is surrounded by number signs (#) as a ColdFusion variable or function call. For example, the following code displays the text "Hello World!":

<cfoutput>#myVar#</cfoutput>
<cfoutput>#myVar#</cfoutput>
<cfoutput>#myVar#</cfoutput>

When you specify a query attribute, this tag loops over the query rows and produces output for each row within the range specified by the startRow and maxRows values, and groups or eliminates duplicate entries as specified by the grouping attribute values, if any. It also sets the query.currentRow variable to the current row being processed.
If you nest cfoutput blocks that process a query, you specify the query and group attributes at the top-most level; you can specify a group attribute for each inner block except the innermost cfoutput block.
This tag requires an end tag.

Example

<!--- Run a sample query. --->
<cfquery name = "GetCourses" dataSource = "cfdocexamples">
SELECT Dept_ID, CorName, CorLevel
FROM courseList
ORDER by Dept_ID, CorLevel, CorName
</cfquery>
<h3>cfoutput Example</h3>
<p>cfoutput tells ColdFusion Server to begin processing, and then to hand back control of page rendering to the web server.
<p>For example, to show today's date, you could write #DateFormat("#Now()#"). If you enclosed that expression in cfoutput, the result would be<cfoutput>#DateFormat(Now())#</cfoutput>.
<p>In addition, cfoutput may be used to show the results of a query operation, or only a partial result, as shown:
<p>There are <cfoutput>#getCourses.recordCount#</cfoutput> total records in our query. Using the maxRows parameter, we are limiting our display to 4 rows.
<p><cfoutput query = "GetCourses" maxRows = 4>
#Dept_ID# #CorName# #CorLevel#<br>
</cfoutput>
<p>EXAMPLE: The next example uses the group attribute to eliminate duplicate lines from a
list of course levels taught in each department.</p>
<p><cfquery name = "GetCourses" dataSource = "cfdocexamples"></p>
SELECT Dept_ID, CorLevel
FROM courseList
ORDER by Dept_ID, CorLevel
</cfquery>
<p><cfoutput query = "GetCourses" group="CorLevel" GroupCaseSensitive="True">
#Dept_ID# #CorLevel#<br></p>
</cfoutput>
<p>cfoutput can also show the results of a more complex expression,
such as getting the day of the week from today's date. We first
extract the integer representing the Day of the Week from
the server function Now() and then apply the result to
the DayofWeekAsString function:</p>
<br>Today is #DayofWeekAsString(DayofWeek(Now()))#
<br>Today is <cfoutput>#DayofWeekAsString(DayofWeek(Now()))#</cfoutput>
<p> EXAMPLE: This last example shows nested cfoutput tags:</p>
<cfquery datasource="cfdocexamples" name="empSalary">
SELECT Emp_ID, firstname, lastname, e.dept_id, salary, d.dept_name
FROM employee e, departmt d
WHERE e.dept_id = d.dept_id
ORDER BY d.dept_name
</cfquery>
<!--- Outer cfoutput. --->
<cfoutput query="empSalary" group="dept_id">
<h2>#dept_name#</h2>
<table width="95%" border="2" cellspacing="2" cellpadding="2" >
<tr>
<th>Employee</th>
<th>Salary</th>
</tr>
<cfset deptTotal = 0 >
<!--- Inner cfoutput. --->
<cfoutput>
<tr>
<td>#empSalary.lastname#, #empSalary.firstname#</td>
<td align="right">#DollarFormat(empSalary.salary)#</td>
</tr>
<cfset deptTotal = deptTotal + empSalary.salary>
</cfoutput>
<tr>
<td align="right">Total</td>
<td align="right">#DollarFormat(deptTotal)#</td>
</tr>
<cfset deptTotal = 0>
</table>
</cfoutput>
<!--- Run a sample query. ---> <cfquery name = "GetCourses" dataSource = "cfdocexamples"> SELECT Dept_ID, CorName, CorLevel FROM courseList ORDER by Dept_ID, CorLevel, CorName </cfquery> <h3>cfoutput Example</h3> <p>cfoutput tells ColdFusion Server to begin processing, and then to hand back control of page rendering to the web server. <p>For example, to show today's date, you could write #DateFormat("#Now()#"). If you enclosed that expression in cfoutput, the result would be<cfoutput>#DateFormat(Now())#</cfoutput>. <p>In addition, cfoutput may be used to show the results of a query operation, or only a partial result, as shown: <p>There are <cfoutput>#getCourses.recordCount#</cfoutput> total records in our query. Using the maxRows parameter, we are limiting our display to 4 rows. <p><cfoutput query = "GetCourses" maxRows = 4> #Dept_ID# #CorName# #CorLevel#<br> </cfoutput> <p>EXAMPLE: The next example uses the group attribute to eliminate duplicate lines from a list of course levels taught in each department.</p> <p><cfquery name = "GetCourses" dataSource = "cfdocexamples"></p> SELECT Dept_ID, CorLevel FROM courseList ORDER by Dept_ID, CorLevel </cfquery> <p><cfoutput query = "GetCourses" group="CorLevel" GroupCaseSensitive="True"> #Dept_ID# #CorLevel#<br></p> </cfoutput> <p>cfoutput can also show the results of a more complex expression, such as getting the day of the week from today's date. We first extract the integer representing the Day of the Week from the server function Now() and then apply the result to the DayofWeekAsString function:</p> <br>Today is #DayofWeekAsString(DayofWeek(Now()))# <br>Today is <cfoutput>#DayofWeekAsString(DayofWeek(Now()))#</cfoutput> <p> EXAMPLE: This last example shows nested cfoutput tags:</p> <cfquery datasource="cfdocexamples" name="empSalary"> SELECT Emp_ID, firstname, lastname, e.dept_id, salary, d.dept_name FROM employee e, departmt d WHERE e.dept_id = d.dept_id ORDER BY d.dept_name </cfquery> <!--- Outer cfoutput. ---> <cfoutput query="empSalary" group="dept_id"> <h2>#dept_name#</h2> <table width="95%" border="2" cellspacing="2" cellpadding="2" > <tr> <th>Employee</th> <th>Salary</th> </tr> <cfset deptTotal = 0 > <!--- Inner cfoutput. ---> <cfoutput> <tr> <td>#empSalary.lastname#, #empSalary.firstname#</td> <td align="right">#DollarFormat(empSalary.salary)#</td> </tr> <cfset deptTotal = deptTotal + empSalary.salary> </cfoutput> <tr> <td align="right">Total</td> <td align="right">#DollarFormat(deptTotal)#</td> </tr> <cfset deptTotal = 0> </table> </cfoutput>
<!--- Run a sample query. --->
<cfquery name = "GetCourses" dataSource = "cfdocexamples">
SELECT Dept_ID, CorName, CorLevel
FROM courseList
ORDER by Dept_ID, CorLevel, CorName
</cfquery>
<h3>cfoutput Example</h3>
<p>cfoutput tells ColdFusion Server to begin processing, and then to hand back control of page rendering to the web server.
<p>For example, to show today's date, you could write #DateFormat("#Now()#"). If you enclosed that expression in cfoutput, the result would be<cfoutput>#DateFormat(Now())#</cfoutput>.

<p>In addition, cfoutput may be used to show the results of a query operation, or only a partial result, as shown:

<p>There are <cfoutput>#getCourses.recordCount#</cfoutput> total records in our query. Using the maxRows parameter, we are limiting our display to 4 rows.
<p><cfoutput query = "GetCourses" maxRows = 4>
#Dept_ID# #CorName# #CorLevel#<br>
</cfoutput>

<p>EXAMPLE: The next example uses the group attribute to eliminate duplicate lines from a
list of course levels taught in each department.</p>
<p><cfquery name = "GetCourses" dataSource = "cfdocexamples"></p>
SELECT Dept_ID, CorLevel
FROM courseList
ORDER by Dept_ID, CorLevel
</cfquery>
<p><cfoutput query = "GetCourses" group="CorLevel" GroupCaseSensitive="True">
#Dept_ID# #CorLevel#<br></p>
</cfoutput>

<p>cfoutput can also show the results of a more complex expression,
such as getting the day of the week from today's date. We first
extract the integer representing the Day of the Week from
the server function Now() and then apply the result to
the DayofWeekAsString function:</p>

<br>Today is #DayofWeekAsString(DayofWeek(Now()))#
<br>Today is <cfoutput>#DayofWeekAsString(DayofWeek(Now()))#</cfoutput>

<p> EXAMPLE: This last example shows nested cfoutput tags:</p>
<cfquery datasource="cfdocexamples" name="empSalary">
SELECT Emp_ID, firstname, lastname, e.dept_id, salary, d.dept_name
FROM employee e, departmt d
WHERE e.dept_id = d.dept_id
ORDER BY d.dept_name
</cfquery>

<!--- Outer cfoutput. --->
<cfoutput query="empSalary" group="dept_id">
<h2>#dept_name#</h2>
<table width="95%" border="2" cellspacing="2" cellpadding="2" >
<tr>
<th>Employee</th>
<th>Salary</th>
</tr>
<cfset deptTotal = 0 >
<!--- Inner cfoutput. --->
<cfoutput>
<tr>
<td>#empSalary.lastname#, #empSalary.firstname#</td>
<td align="right">#DollarFormat(empSalary.salary)#</td>
</tr>
<cfset deptTotal = deptTotal + empSalary.salary>
</cfoutput>
<tr>
<td align="right">Total</td>
<td align="right">#DollarFormat(deptTotal)#</td>
</tr>
<cfset deptTotal = 0>
</table>
</cfoutput>

Examples with encodeFor parameter

<cfset name="sample!@$">
<cfoutput encodeFor="URL">
#name#<br>
</cfoutput>
<cfset name="sample!@$"> <cfoutput encodeFor="URL"> #name#<br> </cfoutput>
<cfset name="sample!@$">
   <cfoutput encodeFor="URL">
       #name#<br>
   </cfoutput>

The above sample produces the following output:

sample%21%40%24

<cfset name="sample!@$">
<cfoutput encodeFor="CSS">
#name#<br>
</cfoutput>
<cfset name="sample!@$"> <cfoutput encodeFor="CSS"> #name#<br> </cfoutput>
<cfset name="sample!@$">
    <cfoutput encodeFor="CSS">
        #name#<br>
    </cfoutput>

The above sample produces the following output:

sample\21 \40 \24

<!--- In this case, the EncodeForURL takes precedence over the EncodeForJavascript that would normally occur for just what it is wrapped around --->
<cfset name="sample!@$">
<cfset type = "javascript">
<cfoutput encodefor="#type#">
encoded using encodeforjavascript:#name#; encoded using encodeforurl:#EncodeForURL(name)# adobe
</cfoutput>
<!--- In this case, the EncodeForURL takes precedence over the EncodeForJavascript that would normally occur for just what it is wrapped around ---> <cfset name="sample!@$"> <cfset type = "javascript"> <cfoutput encodefor="#type#"> encoded using encodeforjavascript:#name#; encoded using encodeforurl:#EncodeForURL(name)# adobe </cfoutput>
<!--- In this case, the EncodeForURL takes precedence over the EncodeForJavascript that would normally occur for just what it is wrapped around --->
<cfset name="sample!@$">
<cfset type = "javascript">
<cfoutput encodefor="#type#">
               encoded using encodeforjavascript:#name#; encoded using encodeforurl:#EncodeForURL(name)# adobe
</cfoutput>

The above sample produces the following output:

encoded using encodeforjavascript:sample\x21\x40\x24; encoded using encodeforurl:sample%21%40%24 adobe

Example with groupCaseSensitive attribute

 

<cfscript>
colors = queryNew("id,color","integer,varchar",
[
{"id":1,"color":"RED"},
{"id":2,"color":"Red"},
{"id":3,"color":"red"}
]);
</cfscript>
<b>Default:</b><br>
<cfoutput query="colors" group="color">
#color#<br>
</cfoutput>
<b>Explicit:</b><br>
<cfoutput query="colors" group="color" groupcasesensitive="yes">
#color#<br>
</cfoutput>
<cfscript> colors = queryNew("id,color","integer,varchar", [ {"id":1,"color":"RED"}, {"id":2,"color":"Red"}, {"id":3,"color":"red"} ]); </cfscript> <b>Default:</b><br> <cfoutput query="colors" group="color"> #color#<br> </cfoutput> <b>Explicit:</b><br> <cfoutput query="colors" group="color" groupcasesensitive="yes"> #color#<br> </cfoutput>
<cfscript> 
 colors = queryNew("id,color","integer,varchar", 
     [ 
      {"id":1,"color":"RED"}, 
      {"id":2,"color":"Red"}, 
      {"id":3,"color":"red"} 
     ]); 
</cfscript> 
 
<b>Default:</b><br> 
 
<cfoutput query="colors" group="color"> 
 #color#<br> 
</cfoutput> 
 
<b>Explicit:</b><br> 
 
<cfoutput query="colors" group="color" groupcasesensitive="yes"> 
 #color#<br> 
</cfoutput>

Output

Default:
RED
Explicit:
RED
Red
red

 

<cfscript>
colors = queryNew("id,color","integer,varchar",
[
{"id":1,"color":"RED"},
{"id":2,"color":"Red"},
{"id":3,"color":"red"}
]);
</cfscript>
<b>Default:</b><br>
<cfoutput query="colors" group="color">
#color#<br>
</cfoutput>
<b>Explicit:</b><br>
<cfoutput query="colors" group="color" groupcasesensitive="no">
#color#<br>
</cfoutput>
<cfscript> colors = queryNew("id,color","integer,varchar", [ {"id":1,"color":"RED"}, {"id":2,"color":"Red"}, {"id":3,"color":"red"} ]); </cfscript> <b>Default:</b><br> <cfoutput query="colors" group="color"> #color#<br> </cfoutput> <b>Explicit:</b><br> <cfoutput query="colors" group="color" groupcasesensitive="no"> #color#<br> </cfoutput>
<cfscript> 
 colors = queryNew("id,color","integer,varchar", 
     [ 
      {"id":1,"color":"RED"}, 
      {"id":2,"color":"Red"}, 
      {"id":3,"color":"red"} 
     ]); 
</cfscript> 
 
<b>Default:</b><br> 
 
<cfoutput query="colors" group="color"> 
 #color#<br> 
</cfoutput> 
 
<b>Explicit:</b><br> 
 
<cfoutput query="colors" group="color" groupcasesensitive="no"> 
 #color#<br> 
</cfoutput>

Output

Default:
RED
Explicit:
RED

Get help faster and easier

New user?