View comments | RSS feed

cfoutput

Description

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

Category

Data output tags

Syntax

<cfoutput 
query = "query_name"
group = "query_column"
groupCaseSensitive = "yes" or "no"
startRow = "start_row"
maxRows = "max_rows_output">
</cfoutput>

See also

cfcol, cfcontent, cfdirectory, cftable

History

ColdFusion 4.5.0: Added the groupCaseSensitive attribute.

Attributes

Attribute Req/Opt Default Description

query

Optional

 

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

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."

groupCaseSensitive

Optional

Yes

Boolean. Whether to consider the case in grouping rows.

startRow

Optional

1

Row from which to start output.

maxRows

Optional

displays all rows

Maximum number of rows to display.

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!":

<cfset myVar="Hello World!">
<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

<!--- EXAMPLE: This example shows how cfoutput operates. --->
<!--- 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">
   SELECT Dept_ID, CorLevel 
   FROM courseList 
   ORDER by Dept_ID, CorLevel
</cfquery>
<p><cfoutput query = "GetCourses" group="CorLevel" GroupCaseSensitive="True">
#Dept_ID# #CorLevel#<br> </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: <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>

ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX | Forums | Developer Center | KnowledgeBase | Bug Reporting

Version 7

Comments


dspent said on Mar 17, 2005 at 2:08 PM :
why does cfoutput only output information in rows?

I want to have an output of my query data like:

1 4 7
2 5 8
3 6 9

but I can only get

1 2 3
4 5 6
7 8 9

This continues to be a major headache with coldfusion.
jrunrandy said on Mar 28, 2005 at 7:36 AM :
dspent:
I have entered enhancement request number 59989 for this issue.
xigarete said on Jun 28, 2005 at 11:51 PM :
About the rows, that's just not true. CF outputs data sequentially, the only thing that is row-based in HTML tables. I suppose it would be possible for Macromedia to automatically rearrange your HTML for you, but you wouldn't have as much control. Actually, I'd also be unhappy with it because screen-readers and text browsers go through items in the order they're present in the HTML, which in HTML tables is always across rows. So it's better for you to make more complicated tables.

For example, to make a 3 column "row based" table you probably have code something like:
<table> <tr> <cfloutput query="myquery>
<td> #output# </td>
<cfif currentrow MOD 3 eq 0 >
</tr> <tr>
</cfif>
</cfoutput>
</tr> </table>

To use columns instead, just nest single-column tables inside a single-row table.
<table> <tr> <td> <table>
<cfloutput query="myquery>
<tr> <td> #output# </td> </tr>
<cfif currentrow MOD 3 eq 0 >
</table> </td> <td> <table>
</cfif>
</cfoutput>
</table> </td> </tr> </table>

Obviously, the MOD 3 part isn't the focus of this code - but you said it worked for you the other way... the focus is on the part that's DIFFERENT.

Ben
Freelance CFML and Actionscript, etc. . ben.macromedia.2005jun29 ATNOSPAM xig.net
WCCinPrinceton said on Jan 10, 2006 at 5:10 PM :
It seems that when using the "group" attribute in this tag, the "maxrows" attribute pertains to the group rows.

For instance, a developer uses a cfoutput tag to display the contents of a query with a record count of 50. If the developer sets the group attribute to the field "Department" and there are 25 unique values for this field, and the the maxrows attribute was set to 25, all 50 records will show.

If the developer uses a Next-N feature and uses the startrow attribute (set to 26), this does not pertain the group rows, but rather to record count 26. This seems to be both advantageous and disadvantageous; it might also seem inconsitent without better supporting documentation.
danimx said on Aug 18, 2006 at 8:42 AM :
cfoutput also supports a java.sql.ResultSet object as its query attribute. It is not documented here, but it is a very useful feature as it can help streaming very long queries to the output stream. However, I'd like to know how will it behave when combined with the group attribute, as I am having some memory problems related with that, specifically if cfoutput will populate a Query object from the jdbc ResultSet or will use it plain when combined with the group attribute.
No screen name said on Aug 23, 2006 at 9:46 AM :
The default value for groupCaseSensitive attribute appears to be incorrect. I had to add groupCaseSensitive="yes" to do case sensitive grouping
i69alot said on Feb 18, 2007 at 7:21 PM :
Despite the documentation, it appears that nesting <cfoutput> tags without the group atttribute seems to work fine. Por ejemplo:

<cfoutput>
On #DateFormat(Now(), "MM/DD/YYYY")# I gave away
<cfoutput>
the random number #Rand()# for free
</cfoutput>
</cfoutput>

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/coldfusion/7/htmldocs/00000309.htm