目录
北极星书库
一旦你在应用程序文件中建立了一个查询,你就可以在其他CFM文件中引用该查询的结果。查询结果可以用来动态地产生HTML网页。
当你学习使用CFML标签时,要记住你也可以在程序中使用HTML标签和文本。在你使用HTML标签和文本的地方,ColdFusion简单地将标签和文本直接传递给客户流览器。输出查询结果的最灵活的方式是使用CFOUTPUT标签。CFOUTPUT标签可以对某个特定的查询进行输出,也可以输出多个查询的内容。一个CFOUTPUT标签中可以包含:
·纯文本
·HTML标签
·引用查询字段
·引用动态参数,如Form字段
·函数
基本的输出代码有如下的语法:
<CFOUTPUT QUERY=" queryname" MAXROWS= n >
Literal text, HTML tags, and
dynamic field references (e.g., #FullName#)
</CFOUTPUT>
CFOUTPUT中的数据库字段名
有些数据库,如Microsoft Access,允许字段名中带有空格,例如”Region Name.”。ColdFusion在CFOUTPUT中不支持对这种字段的引用。要和ColdFusion兼容,应避免在表名和字段名中使用空格,这使应用程序对不同的数据库系统具有最大的兼容性。你可以用下划线作分隔符,如”Region_Name”。
字段名必须以字母开头,且只能包含字母和数字。你 可以用SQL关键字AS为字段名起一个别名。例如,语句:
SELECT 401K AS FK FROM Employee_Withholding
在CFQUERY中可以得到正确处理。
例子:CFOUTPUT
在下面的例子中,我们用CFOUTPUT标签显示查询EmployeeList的查询结果。选择显示的内容是每个员工的姓,名,和电话号码。在变量名中指定查询名是个很好的编程习惯。
下面给出程序的完整代码:
<!--- Query to select customers --->
<CFQUERY NAME="EmployeeList" DATASOURCE="CompanyDB">
SELECT *
FROM Employees
</CFQUERY>
<HTML>
<HEAD>
<TITLE>Employee List</TITLE>
</HEAD>
<BODY>
<H2>Employee List</H2>
<!--- Output section --->
<CFOUTPUT QUERY="EmployeeList">
<HR>
#EmployeeList.FirstName# #EmployeeList.LastName#
(Phone: #EmployeeList.PhoneNumber#) <BR>
</CFOUTPUT>
</BODY>
</HTML>
你可以直接通过URL来申请这个网页,如:
http://myserver/cfdocs/employeelist.cfm
或者通过超链接引用:
<A HREF=”myserver/cfdocs/employeelist.cfm">Employee List</A>
这个例子的输出结果的HTML代码类似于:
<HR>
Deborah Jones (Phone: 612-227-1019) <BR>
<HR>
John Smith (Phone: 507-452-7224) <BR>
<HR>
Frank Wilson (Phone: 612-831-9555) <BR>
嵌套CFOUTPUT和分组
你可以对CFOUTPUT进行嵌套,以实现查询结果的分组显示。分组的实现是通过指定CFOUTPUT标签的GROUP属性,然后将另一个CFOUTPUT嵌人前一个CFOUTPUT。内层CFOUTPUT上面和下面的内容用于给每一组显示一个标题和脚注信息。
例子:分组
下面的代码使用CFOUTPUT的GROUP属性,根据”CourseLevel”的值将查询结果分组显示。ORDER BY关键字根据CourseLevel字段的值对查询结果进行排序。CFOUTPUT嵌套没有层数的限制,如果你想使用多级分组,你需要在SQL查询中设置多级排序(例如,”ORDER BY Region,State”)。
<CFQUERY NAME="Courses" DATASOURCE="CourseDB">
SELECT *
FROM CourseList
WHERE Department_ID = ?Form.Department#
ORDER BY CourseLevel
</CFQUERY>
<CFOUTPUT QUERY="Courses" GROUP="CourseLevel">
<H4>#CourseLevel#</H4>
<UL>
<CFOUTPUT>
<LI> #CourseNumber# - #CourseName#
</CFOUTPUT>
</UL>
</CFOUTPUT>
这个例子在流览器中显示的结果为:
Basic
100 - Physiology
Intermediate
510 - Neurobiology
500 - Plant Biology
Advanced
820 - Neurobiology
800 – Microbiology
CFQUERY 属性
执行每个CFQUERY时,有三个属性可以提供记录数信息。
记录数 |
|
记录数 |
描述 |
RecordCount |
查询所返回的记录总数。 |
CurrentRow |
CFOUTPUT正在处理的当前记录。 |
ColumnList |
返回用逗号隔开的查询字段列表。 |
例子:查询字段
这个例子返回查询CustomerList的记录数和查询字段的列表:
<CFOUTPUT>
The search returned information
on #CustomerList.RecordCount# customers.<BR>
Columns queried were #CustomerList.ColumnList#.
</CFOUTPUT>
要显示每个记录的记录序号,可以用如下语法:
<CFOUTPUT QUERY="CustomerList">
#CurrentRow# - #FirstName# #LastName# <BR>
</CFOUTPUT>
返回记录集的一部分
对于较大的记录集,你也许希望只显示该记录集的一部分。用CFOUTPUT标签的STARTROW和MAXROWS属性可以做到这一点。STARTROW指定记录集中第一条要返回的记录。MAXROWS指定了要返回的记录总数。
例子:记录集的一部分
这个例子显示查询EmployeeList的结果记录集中第10到20条记录:
<CFOUTPUT QUERY="EmployeeList"
STARTROW="10" MAXROWS="20">
#FirstName# #LastName# #Phone# <BR>
</CFOUTPUT>
在CFOUTPUT中使用参数
CFOUTPUT不仅仅用于显示查询到的数据。你也可以用CFOUTPUT显示Form变量,URL变量,Cookie,Client变量,Server变量,Session变量,Application变量,和CGI环境变量。引用这些变量时要注意使用正确的前缀,这样ColdFusion才能将这些变量与查询结果的字段名区分开。与查询字段一样,变量必须扩在井号中。对查询结果的每条记录,参数值都被显示一次。注意,若要显示井号本身,应用两个连续的井号表示一个井号。
前页
目录
北极星书库