ASP生成分页信息列表静态文件(带翻页功能)

从数据库里读取数据,按每页一定数量分页,并生成可翻页的静态列表文件。话不多说,代码贴在下面,供自己引用备忘,也希望有朋友能优化一下代码。谢谢!


<%
On Error Resume Next

connstr="driver={SQL server};server=(local);uid=sa;pwd=123456;database=date"
set conn=Server.Createobject("ADODB.Connection")
conn.open connstr

psize=30
sql="select count(*) from mall_data"
set rs=conn.execute(sql)
If rs.eof Then
    rs.close
    set rs=Nothing
    response.write"没有记录,无法为您生成静态页"
    response.End
Else
    rscount=rs(0)
    pcount=ceiling(rscount/psize) '计算总页数
    rs.close
    set rs=Nothing
end If
for i=1 to pcount
    if i=1 then
        sql="select top "&psize&" * from mall_data order by id desc"
    else
        sql="select top "&psize&" * from mall_data where id< (select min(id) from (select top "&psize*(i-1)&" * from data order by id desc) as maxid) order by id desc"
    end If
    response.write sql&"<br>"
    set rs=server.createobject("adodb.recordset")
    rs.open sql,conn,1,1
    If Not rs.eof Then
        list=""
        list=list&chr(13)
        do while not rs.eof
            list=list&"<li><a href='"&rs("id")&".html'>"&rs("name")&"</a></li>"
            rs.movenext
        loop
        pages=""
        response.write "<a href='mypage/list_"&i&".html"&"'>"&"list_"&i&".html</a><br>"
        pages = showpageNavi(rscount,psize,i,"list_$i$.html")
        set fso=server.createobject("scripting.filesystemobject")
        set fl_w=fso.opentextfile(server.mappath("template.html")) '模板页路径 在模板需要的地方使用标签
        html=fl_w.readall()
        fl_w.close:set fl_w=nothing
        html=replace(html,"<$list$>",list)
        html=replace(html,"<$pages$>",pages)
        set fl_w=fso.createtextfile(server.mappath("mypage/list_"&i&".html"),true)
        '生成列表页面文件 list_1.htm ,list_2.html ,list_3.html...
        fl_w.write(html)
        fl_w.close:set fl_w=Nothing
    End If
    rs.close
next
response.write"列表已全部生成!"

function ceiling(str)
    str1=int(str)
    if str-str1>0 then
    ceiling=str1+1
    else
    ceiling=str
    end if
end function

function showpageNavi(totalnumber,maxperpage,CurrentPage,filename)
    '翻页功能
    If totalnumber mod maxperpage=0 Then
        n= totalnumber \ maxperpage
    Else
        n= totalnumber \ maxperpage+1
    End If
    '直接跳转到某页的功能
    showpageNavi = "<span style='float:left;'>直接打开:<select onChange='location=this.options[this.selectedIndex].value;'>"&_
        "<option selected>请选择</option>"
    For m=1 To n
        showpageNavi = showpageNavi & "<option value='"&Replace(filename,"$i$",m)&"'>"&Replace(filename,"$i$",m)&"</option>"
    Next
    showpageNavi = showpageNavi & "</select></span><span style='float:right;'>"
    showpageNavi = showpageNavi & ""
    If CurrentPage<2 Then
       showpageNavi = showpageNavi & "<img border=0 src=/images/icon/a_go_first_disa.gif> <img border=0 src=/images/icon/a_go_back_disa.gif> "
    Else
       showpageNavi = showpageNavi & "<a href="&Replace(filename,"$i$","1")&"><img border=0 src=/images/icon/a_go_first.gIf alt=第一页></a> "&_
       "<a href="&Replace(filename,"$i$",CurrentPage-1)&"><img border=0 src=/images/icon/a_go_back.gIf alt=上一页></a> "
    End If
    If n-currentpage<=1 Then
       showpageNavi = showpageNavi & "<img src=/images/icon/a_go_next_disa.gif> <img src=/images/icon/a_go_end_disa.gif>"
    Else
       showpageNavi = showpageNavi & "<a href="&Replace(filename,"$i$",CurrentPage+1)&"><img border=0 src=/images/icon/a_go_next.gIf alt=下一页></a> "&_
                      "<a href="&Replace(filename,"$i$",n)&"><img border=0 src=/images/icon/a_go_end.gIf alt=最后一页></a>"
    End If
    showpageNavi = showpageNavi & "</span>"
End Function

%>


需要特别注意的地方是SQL字串的写法。上面是逆排序,所以是那样,如果是正排序,则应该写成下面的样子:


sql="select top "&psize&" * from mall_data where id> (select max(id) from (select top "&psize*(i-1)&" * from data order by id ) as maxid) order by id"


换上数据库的连接信息,修改字段名,就直接可以运行生成静态文件了。

本文是在网络上搜集到的资料基础上整理得来的,加上了“上一页、下一页”及直接跳转的翻页功能,但我比较喜欢下面的翻页形式。

如:1 2 3 4 5 ...... 末页。

今天累了,改了再整理吧。

[本日志由 ancher 于 2012-09-10 01:04 PM 更新]
上一篇: 转基因食品,健康安全吗?
下一篇: 关于男人与女人的算式
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ASP 分页 翻页 静态化
相关日志:
评论: 1 | 引用: 0 | 查看次数: 5018
df[2012-06-08 04:53 PM | 访问 http://www.baixinxi.com | Mail To:yzhong0106@gmail.com | 60.55.8.27 | del | 回复回复]
沙发
帮我看看我的小站 就上面个 百信息网  信息列表页面 变形了 请教怎么修改啊????谢谢
发表评论
你没有权限发表评论!