Search 表单上的模具(就地)用于查询数据筛选(如下拉选择筛选)。因为这是非常具体的。我将跳转到包的其他部分,但我想保持这个答案不变,因为它是好的。不要假设id是连续的,因为如果记录被删除,分页逻辑会中断。代码可能显示的记录太少,或者根本没有记录。另外,请始终使用c
Search 表单上的模具(就地)用于查询数据筛选(如下拉选择筛选)。因为这是非常具体的。我将跳转到包的其他部分,但我想保持这个答案不变,因为它是好的。不要假设id是连续的,因为如果记录被删除,分页逻辑会中断。代码可能显示的记录太少,或者根本没有记录。另外,请始终使用c,search,coldfusion,pagination,Search,Coldfusion,Pagination,表单上的模具(就地)用于查询数据筛选(如下拉选择筛选)。因为这是非常具体的。我将跳转到包的其他部分,但我想保持这个答案不变,因为它是好的。不要假设id是连续的,因为如果记录被删除,分页逻辑会中断。代码可能显示的记录太少,或者根本没有记录。另外,请始终使用cfqueryparam。它使用绑定变量来防止sql注入并提高性能。我不知道为什么我会因为试图提供帮助而被解雇。在这种情况下,你的查询可能是前25条记录,你的隐藏可能是最后一个ID。。。我只是想给CatherineL一个起点…我否决了这个,因为它
表单上的模具(就地)用于查询数据筛选(如下拉选择筛选)。因为这是非常具体的。我将跳转到包的其他部分,但我想保持这个答案不变,因为它是好的。不要假设id是连续的,因为如果记录被删除,分页逻辑会中断。代码可能显示的记录太少,或者根本没有记录。另外,请始终使用
cfqueryparam
。它使用绑定变量来防止sql注入并提高性能。我不知道为什么我会因为试图提供帮助而被解雇。在这种情况下,你的查询可能是前25条记录,你的隐藏可能是最后一个ID。。。我只是想给CatherineL一个起点…我否决了这个,因为它是不正确的,不能可靠地工作。另外,sql将数据库公开给sql注入。隐藏场方法也有同样的逻辑问题。ID值!=创纪录的数字。虽然帮助总是受到赞赏,但提供准确的信息很重要。特别是对那些不熟悉这门语言的人来说。嗨,Leigh,我展示的是基本的结构,多年来它一直在为我建立的一个网站完美地工作。看着CatherineL的脚本,我相信她会知道如何编辑它,并使它在她的框架内安全地工作。它简单、快速,并将信息排除在url(表单)之外。安迪,仅仅因为代码没有抛出硬错误,并不意味着它工作正常;-)看看sql逻辑。想一想如果ID中有间隙会发生什么。你可能会得到三张唱片,十张唱片或者一张也没有。试试看。而其他两个答案无论如何都会起作用。对于查询,请始终将cfqueryparam与变量值一起使用。然后,查询将得到保护,即使是针对意外的变量暴露。此外,绑定变量通过促进执行计划的重用来提高性能。还有一些其他问题,如缺乏范围界定和过度迹象,但这些问题并不那么关键。
<cfset Next = StartRow + DisplayRows>
<cfset Previous = StartRow - DisplayRows>
<cfoutput>
<cfif Previous GTE 1>
<a href="#CGI.Script_Name#?StartRow=#Previous#"><b>Previous #DisplayRows# Records</b></a>
<cfelse>
Previous Records
</cfif>
<b> | </b>
<cfif Next lte records.RecordCount>
<a href="#CGI.Script_Name#?StartRow=#Next#"><b>Next
<cfif (records.RecordCount - Next) lt DisplayRows>
#Evalute((records.RecordCount - Next)+1)#
<cfelse>
#DisplayRows#
</cfif>Records</b></a>
<cfelse> Next Records
</cfif>
<cfoutput>
<cfparam name="StartRow" default="1">
<cfparam name="DisplayRows" default="25">
<cfset ToRow = StartRow + (DisplayRows - 1)>
<cfif ToRow gt records.RecordCount>
<cfset ToRow = records.RecordCount>
</cfif>
<Cfoutput query="records" startrow="#next#" maxrows="#displayrows#">
... code to output your data goes here
</cfoutput>
<Cfloop query="records" startrow="#next#" endrow="#next+displayrows#">
...code to output your data.
</cfloop>
<cfloop from="#next#" to="#next+displayrows#" index="x">
.... your outputs will look like this:
#records[columname][x]#
</cfoutput>
<cfparam name="pageNum" default="1">
<cfquery name="q" datasource="#application.dsn#">
select * from yourTable
</cfquery>
<cfset maxRows = 10>
<cfset startRow = min( ( pageNum-1 ) * maxRows+1, max( q.recordCount,1 ) )>
<cfset endRow = min( startRow + maxRows-1, q.recordCount )>
<cfset totalPages = ceiling( q.recordCount/maxRows )>
<cfset loopercount = round( q.recordCount/10 )>
<cfoutput>
<cfloop from="1" to="#looperCount#" index="i">
<a href="?pageNum=#i#">#i#</a>
</cfloop>
</cfoutput>
<br><br>
<cfoutput
query="q"
startrow="#startRow#"
maxrows="#maxRows#">
#id#<br>
</cfoutput>
<cfif submit IS "NEXT">
<cfset count1 = #count# + 1>
<cfset count2 = #count# + 25>
<cfelseif submit is "BACK">
<cfset count1 = #count# - 26>
<cfset count2 = #count#>
<cfelseif submit is "HOME">
<cfset count1 = 1>
<cfset count2 = 25>
</cfif>
SELECT *
FROM mytabl
WHERE ID BETWEEN #count1# AND #count2#
<table>
<cfoutput query="myquery">
<tr>
<td>
#my data1#
</td>
<td>
#my data2#
</td>
</cfoutput>
</tr>
<table>