主题:  常见问题之分页显示

5D荣誉版主

职务:普通成员
等级:1
金币:10.0
发贴:271
#12002/12/17 15:17:57
这个问题不是第一次问到了,虽然简单,但兄弟不才,做了个例子
看看,也许对大家有点帮助
<%
    pagesize = 15 '定义每页的记录数
    set conn = server.CreateObject("adodb.connection")
    connstr = 数据库连接字符串
    conn.Open connstr
    set rs = server.CreateObject("adodb.recordset")
    sql = "select * from [column]"
    rs.Open sql,conn,1,1        
%>

    
        page
    
    
        <%if rs.EOF and rs.BOF then%>
            
                
                    
                
            
>no record!

        <%else%>
            
                
                    <%for i=0 to rs.Fields.count-1%>
                        
                    <%next%>
                                
                <%                        
                    if request("page")="" then
                            curpage=1
                    else
                            curpage=cint(request("page"))
                    end if
                    rs.pagesize=pagesize
                    rs.absolutepage=curpage
                    for i = 1 to rs.pagesize
                %>
                        <%for j=0 to rs.Fields.count-1%><%next%>
                <%
                        rs.MoveNext
                        if rs.eof then
                            i = i + 1
                            exit for
                        end if
                    next
                %>                
                
                    
                
            
<%=rs.Fields(i).Name%>
<%=rs(j)%>
>
                        <%
                            response.write "
"
                            response.write "第" + cstr(curpage) + "页/总" + cstr(rs.pagecount) + "页 "
                            response.write "本页" + cstr(i-1) + "条/总" + cstr(rs.recordcount) + "条 "
                            if curpage = 1 then
                                response.write "首页 前页 "
                            else
                                response.write "首页 前页 "
                            end if
                            if curpage = rs.pagecount then
                                response.write "后页 末页"
                            else
                                response.write "后页 末页"
                            end if
                        %>
                    

        <%end if%>
    



FlowJZH

职务:普通成员
等级:1
金币:0.0
发贴:22
#22002/12/17 16:22:16
以上程序缺点:

1.关于页码的显示,调用过多的后台asp程序去处理,没有太大的不要,其实前台的javascript语言中的location.href完全可以胜任。

2.对于某些本来就有request.querystring的函数,比如这个显示帖子的当前页面"http://www.5dmedia.com/bbs/NewsDetail.asp?id=604727",里面有"id=604727"之类的已有字符串,那么用这个程序将无法正确生成下一页的url,除非编程的人对每个这样的例子都手动加上特定的代码,但是这样很不方便。



5D荣誉版主

职务:普通成员
等级:1
金币:10.0
发贴:271
#32002/12/17 17:15:40
诶,是啊,你说的有些道理,但我写这个不是为了别的呵.
主要是为了那些对分页显示感到困惑的同志提供一种方法而已,当然不能适用于那种含有查询参数的情况了,难道我还得用
for i=0 to Request.QueryString.Count
querystr = querystr & request.querystring.item(i)
next
然后在每个换页的链接处加上这个参数来增加程序的通用性?



FlowJZH

职务:普通成员
等级:1
金币:0.0
发贴:22
#42002/12/17 18:25:55
3个问题

1.以上代码似乎还少一些东西因为里面看不到任何的"="字符
2.request.querystring.item(0)会产生数组索引越界错误
3.以上代码同样是用asp程序在服务器端实现了本可以在客户端实现的功能。

下面的JS代码可供参考
var strQueryString = window.location.search;
strQueryString = strQueryString.replace(/[\?&]*page=\d+/ig,"");
strQueryString = strQueryString.replace(/^\?/,"&");


以上代码用正则表达式在客户端直接产生没有"page=xx"在其中的QueryString,小生在这里只是抛砖引玉,告诉大家window.location对象的一些使用方法,而分页代码的总体原则小生以为应该做到能不在服务器端实现的尽量不要在服务器端实现。



今晚在线

职务:普通成员
等级:3
金币:1.0
发贴:761
#52002/12/18 1:19:23
对于新手够用了……



learnasp

职务:普通成员
等级:1
金币:0.0
发贴:1
#62002/12/23 14:49:30


显示页面!!!!!








<%set rs=server.createobject("adodb.recordset")
sql="select * from title "
rs.open sql ,adocon,1,1
%>
<% rs.pagesize=5 %>
<% if not isempty(request("page")) then
page=cint(request("page"))
end if %>
<%
if page>rs.pagecount then
rs.absolutepage=rs.pagecount
else if page<=0 then
rs.absolutepage=1
else
rs.absolutepage=page
end if
end if
b=rs.absolutepage
%>





显示页面(添加)












序号


标题


作者


时间




<%
i=rs.pagesize
do while not rs.eof and i>0%>




<%
i=i-1
rs.movenext
loop
%>
<%=rs("id")%> <%=rs("title")%> <%=rs("author")%> <%=rs("time")%>









共有<%=rs.pagecount%>页 每页有<%=rs.pagesize %>条记录 <%=rs.absolutepage-1%>/<%=rs.pagecount %>


<% if b <> 1 then %>


<% end if %>
<% if b <> rs.pagecount then %>



<% end if %>

首页 上一页 下一页 尾页





<% rs.close
set rs=nothing
adocon.close
set adocon=nothing
%>