|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧ado|编程|法式|分页|ado|分页 应当来讲,学会了若何拔出纪录,若何显示纪录,那末如今复杂的完全的文章体系、旧事体系和留言体系不成成绩。那接着上面的成绩就是:跟着信息内容的不段增添,独自经由过程一张页面显示一切信息是不可也是很不睬性的。所以,处理的举措就是采取分页手艺。
1,rs.RecordCount
很明显,RecordCount就是用来显示数据库表中一共几何笔记录的,也能够抽象地说表中一共有几何行。常常用在分页中就是一共有N篇文章等总计的信息显示。
2,rs.PageSize
rs.PageSize也就是一页的巨细,也就暗示一张ASP页可以显示纪录的条数。值是本人界说的,好比常常看到的每页显示N篇文章之类的信息。
3,rs.AbsolutePage 和 rs.pagecount
说到分页,必定不克不及不提到 rs.AbsolutePage 。纪录集的AbsolutePage属性最次要的感化就是决意着以后显示的是第几页。它的值是有根据的,指定了rs.PageSize,那末rs.pagecount的信息值就是rs.RecordCount和rs.PageSize整除了局。好比:总信息纪录rs.RecordCount共20条,每页显示条数rs.PageSize设为5条,那末页数rs.pagecount数就是20/5=4页次,而rs.AbsolutePage则就只能是第1页,第2页……第4页。
说到如今,弄个详细法式来调试一下。持续对showit.asp停止修正以下:
<!--#include file="conn.asp" -->
<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle order by cn_id desc"
rs.Open sql,conn,1,1
%>
<%
page=request.querystring("page") 'page值为承受值
rs.PageSize = 2 '每页显示纪录数
rs.AbsolutePage = Page '显示以后页等于吸收的页数
%>
<%
For i = 1 to rs.PageSize '使用for next 轮回顺次读出以后页的纪录
if rs.EOF then
Exit For
end if
response.write("<br>文章内容是:"& rs("cn_content"))
rs.MoveNext
next%>
<%
rs.close
Set rs = Nothing
conn.close
set conn=nothing
%>
HERE,你调试的条件就是数据库中的纪录绝对要大于4条,如许测试后果才分明;还有测试的办法就是在showit.asp前面添加?page=1或?page=2等调试察看网页显示后果。
其实,说究竟,显示数据库内容就是
<%
For i = 1 to rs.PageSize
if rs.EOF then
Exit For
end if
response.write("<br>文章内容是:"& rs("cn_content"))
rs.MoveNext
next%>
起的感化,但想象一下:该法式应当都只能显示出2条信息(一向不变的2条信息)。但为何加上?page=1和?page=2会显示分歧的了局呢?……那相对就是rs.AbsolutePage的感化了。这个弄清晰,信任分页的全体架构就有点端倪了。
<!--#include file="conn.asp" -->
<%
Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from cnarticle"
rs.Open sql,conn,1,1
%>
<%filepath=request.servervariables("path_info")%>
<%
page=request.querystring("page") 'page值为承受值
rs.PageSize = 2 '每页显示纪录数
if Not IsEmpty(page) then '假如page已初始化...
if Not IsNumeric(page) then '判别page值是不是为数字
page=1
else
Page = cint(page) '吸收page并化为数字型赋给page变量
end if
if Page > rs.PageCount then '假如吸收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置以后显示页等于最初页
elseif Page <= 0 then '假如page小于等于0
rs.AbsolutePage = 1 '设置以后显示页等于第一页
else
rs.AbsolutePage = Page '假如大于零,显示以后页等于吸收的页数
end if
else
rs.AbsolutePage=1
end if
Page = rs.AbsolutePage%>
<%
For i = 1 to rs.PageSize '使用for next 轮回顺次读出以后页的纪录
if rs.EOF then
Exit For
end if
response.write("文章题目是:"& rs("cn_title"))
response.write("<br>文章作者是:"& rs("cn_author"))
response.write("<br>文章到场工夫是:"& rs("cn_time"))
response.write("<br>文章内容是:"& rs("cn_content"))
response.write("<hr>")
rs.MoveNext
Next
%>
<form action="<%=filepath%>" method="get">
<!--起首包管总页数不为1、不为0-->
<%if rs.pagecount<>1 and rs.pagecount<>0 then%>
<!--假如以后页数大于1,不管什么时候都应显示首页和上一页的毗连-->
<%if page>1 then%>
[<a Href="<%=filepath%>?Page=<% = 1%>">首页</a>]
[<a Href="<%=filepath%>?Page=<% = page -1 %>">上一页</a>]
<!--假如以后页数大于1而且小于总页面数时,显示出尾页和下一页的毗连-->
<%if page<rs.pagecount then %>
[<a Href="<%=filepath%>?Page=<% = page + 1%>">下一页</a>]
[<a Href="<%=filepath%>?Page=<% = rs.PageCount%>">尾页</a>]
<!--假如以后页数大于1而且仍大于或等于总页面数时,不显示出尾页和下一页的毗连-->
<%else%>
[下一页] [尾页]
<%end if%>
<!--不然,以后页数不大于1,则只显示尾页和下一页的毗连-->
<%else%>
[首页] [上一页]
[<a Href="<%=filepath%>?Page=<% = page + 1%>">下一页</a>]
[<a Href="<%=filepath%>?Page=<% = rs.PageCount%>">尾页</a>]
<%end if %>
<!--终究,总页数若为1、为0则没有任何毗连-->
<%else%&</p> asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。 |
|