100分请教高手ASP分页显示页码个数

以下是我做的分页显示,就是那一段页码分页只能循环到最后显,如果我数据越多页码就越多,但是我想改成每页只能显示五个页码,如极品桌面这样http://www.ppdesk.com/sort2/1_1.htm
请高手帮解决答,解答成功马上送分,谢谢
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn.asp" -->
<%
sql="select * from bizhi order by id desc"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3,1
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<%
if rs.eof then
response.write "暂无图片"
else
rs.pagesize=1'定义每页几张图片
zongye=rs.pagecount'计算总共几页
mrs=rs.recordcount'计算共有几张图片
page=int(request("page"))'当前所在页码
if page<=0 then page=1
if page>=zongye then page=zongye
if request("page")="" then page=1
rs.absolutepage=page
for i=1 to rs.pagesize
response.write"<a href=xx.asp?id="&rs("id")&"><img src="&rs("tupian")&"></a>"
rs.movenext
next
%>
<p align="center">
共<%=zongye%>页 本页为第<%=page%>页 每页<%=rs.pagesize%>张 共<%=mrs%>张
<%if page<>1 then%>
<a href="fenye.asp?page=1">首页</a>
<%else%> 首页
<%end if%>
<%if page<>1 then%>
<a href="fenye.asp?page=<%=page-1%>">上一页</a>
<%else%> 上一页
<%end if%>
<%if page<>zongye then%>
<a href="fenye.asp?page=<%=page+1%>">下一页</a>
<%else%> 下一页
<%end if%>
<%if page<>zongye then%>
<a href="fenye.asp?page=<%=zongye%>">末页</a>
<%else%> 末页
<%end if%>
<%for i=1 to zongye%>
<%if i<>page then%>
<a href="fenye.asp?page=<%=i%>">[<%=i%>]</a>
<%else%>
[<%=i%>]
<%end if%>
<%next%>
<form action="fenye.asp" method=post>
<input name=page type=text size=2 maxlength=3>
<input type=submit value="跳转">
</form>
<%end if%>
<%rs.close
conn.close
set rs=nothing
set conn=nothing%>
</p>
</body>
</html>

第1个回答  2008-09-01
我们一个留言版或者文章系统等系统的时候,往往会出现太多的文章, 以致网页的美感大大形响了.那有何办法呢?下向我向大家写下一个分页教程,写得不好,望大家不要笑我.毕竟本人也是第一次(会懂分页程序的高手建议看看便好,不要学习.以免打乱你以往的编程习惯)^_^
程序例子: http://www.1860d.com/liu.asp
下面先给出连接数据库代码:(本文用的是Access数据库.数据库名字叫 data.mdb )
<%
dim conn
set c.CreateObject("adodb.connection")
conn.open "dbq="&server.MapPath("data.mdb") &";driver={microsoft access driver (*.mdb)};"
%>

'上面server.MapPath("data.mdb") 中的data.mdb为数据库路径
接着下来就是显示出数据库里面的内容:
<%
dim sql,rs
set rs=server.createobject("adodb.recordset")
sql="select * from liu order by id desc" 'liu为表名
rs.open sql,rs,1,1
'------------------------------------------下面做分页的内容定义了
if rs.eof <> "" then
rs.pagesize=10 '定义每一页显示10条纪录
sum=rs.recordcount '获取数据库里面的总纪录条数
sumpage=er.pagecount '获取数据库里面的总页数
nowpage=request("page") '获取当前的页数
if nowpage&""="" then '判断如果获取当前页的数据为空的话,那么就把当前页设为第一页nowpage=1
nowpage=1
else
nowpage=cint(nowpage) '否则就把当前页转换为数值型再传给当前页nowpage
end if
rs.absolutepage=nowpage '将当前页转到第一条信息,例如: 比如有20条记录的一个数据库,我们分为10条记录显示一页,当你的页面为2时,通过使用rs.absolutepage将指针移动到第11条记录处
else
response.write("暂无资料...")
end if
%>

OK,上页分页的内容已经定义好了.现在就把你想显示的内容循环显示出来吧
<%
For i=1 to rs.pagesize '由第一条纪录循环显示到前面所定义的每页条数.
if rs.eof then '如果到数据库最后一条纪录的话就跳出循环.
Exit for
end if
%>
<%=rs("字段名")%> '这里就是你想显示的内容
<%
rs.movenext
next
%>

'重点来了.下面是做分页连接我提供两种显示方式给大家(下面liu.asp是本页的连接地址):
方法一:
总共<%=sum%>条纪录 第<%=nowpage%>/<%=sumpage%>页
<%if nowpage>1 then%>
<a href="liu.asp?page=<%=1%>">首页</a>
<a href="liu.asp?page=<%=nowpage-1%>">上一页</a>
<%end if%>
<%if nowpage <> sumpage then%>
<a href="liu.asp?page=<%=nowpage+1%>">下一页</a>
<a href="liu.asp?page=<%=sumpage%>">未页</a>
<%end if%>

方法二(较简单):
<%for k=1 to sumpage%>
<%if k<> nowpage then%>
<a href="liu.asp?page=<%=k%>"><%=k%></a>
<%else%>
<%end if%>
<%next%>

参考资料:mwyf

第2个回答  2008-09-01
‘按照上面的算法,下面同样也给个算法,够冗余的

把for i=1 to rs.pagesize改为for i= ksys to jsys,然后在之前插入下面一段,随便玩玩,没有实际测试过……

ysxz=5’页数限制
sjys=1’实际页数
ksys=page’开始页数
jsys=page’结束页数
ksf= page<=1’到头
jsf=page>=zongye’到尾
do while sjys>= ysxz or not (ksf and jsf)’满页数限制了或者实际页数不到页数限制
if ksys-1>1 then
ksys=ksys-1
sjys=sjys+1
else
ksf=true
end if

if jsys+1<=zongye then
jsys = jsys +1
sjys=sjys+1
else
jsf=true
end if
loop本回答被提问者和网友采纳
第3个回答  2008-09-01
呵呵.你的问题问得正好.现在很多人都会问这些问题,正因如此.我特写了一编文章:
http://user.qzone.qq.com/199248375/blog/3
上去看看.详细了解一下.保证你懂的.
相似回答