关于ASP分页的问题,对于初学者是一个比较重要的问题,也是各个网站运用最为广泛的技术,下面我就把我总结的一点小经验介绍给大家(写的不好,请大家指点) 1.原理:ASP分页其实是将数据库中的记录分割成若干段“分屏显示” ,为什么叫“分屏显示”显示,因为其实显示的原始页面只有1页,通过控制数据库显示,来刷新页面的显示内容(可能一些朋友会误会为动态产生若干页面来显示,呵呵,我刚刚学的时候也是这样以为的) 2.用到的几个函数 rs.pagesize--->定义一页显示记录的条数 rs.recordcount--->统计记录总数 rs.pagecount---->统计总页数 这几个函数相信大家都很快就明白意识了,不过还有一个函数它的用法可能理解起来难一点 rs.absolutepage--->将数据库指针移动到当前页要显示的数据记录的第一条记录,比如有20条记录的一个数据库,我们分为10条记录显示一页,当你的页面为2时,通过使用rs.absolutepage将指针移动到第11条记录处,依次类推.... 3.大家明白原理后我们开始来看一段分页的程序,其中的一些文件我就不一一详细讲解了,不明白的朋友可以先看
http://www.2yup.com/asp/forum/branch.asp?pid=55084&pn=5 -------------------------------------------------- <!--#include file=conn1.asp--> <% dim m,n set rs=server.CreateObject("adodb.recordset") sqlstr="select * from message order by time desc" rs.open sqlstr,conn,3,3 rs.pagesize=10 '定义一页显示的记录数目 tatalrecord=rs.recordcount '获取记录总数目 tatalpages=rs.pagecount '获取分页的数目 rs.movefirst ---------------------------- nowpage=request("page") '用request获取当前页数,注意page是自己定义的变量并非函数 -------------------------- if nowpage&"x"="x" then '处理页码为空时的情况 nowpage=1 else nowpage=cint(nowpage) '将页码转换成数字型 end if -------------------------------- rs.absolutepage=nowpage '将指针移动到当前显示页的第一条记录 ------------------------------- %> --------------------------------------------- <% n=1 while not rs.eof and n<=rs.pagesize response.Write(rs("user") & "<br>") response.Write(rs("tt") & "<br>") n=n+1 rs.movenext '显示页面的数据 wend %> ------------------------------------------- 共:<%=tatalpages%>页 当前为:<%=nowpage%>页 <%if nowpage>1 then%> <a href="fy.asp?page=<%=nowpage-1%>">上一页</a> <%else%> 上一页 <%end if%> <%for k=1 to tatalpages%> <%if k<>nowpage then %> <a href="fy.asp?page=<%=k%>"><%=k%></a> <%else%> <%=k%> <%end if%> <%next%> <%if nowpage < tatalpages then%> <a href="fy.asp?page=<%=nowpage+1%>">下一页</a> <%else%> 下一页 <%end if%> '加上页码连接 <%if nowpage<>1 then%> <a href="fy.asp?page=<%=1%>"> 首页</a> <%else%> 首页 <%end if%> <%if nowpage<>tatalpages then %> <a href="fy.asp?page=<%=tatalpages%>">末页</a> <%else%> 末页 <%end if%> ------------------------------------------------ 这样一个分页的就OK了,呵呵,写的不好的地方请大家指点:)
|