对长了的文章进行分页显示!

介绍以下函数的用法,一般,如显示新闻内容的ASP文件都要至少收集id 的值,如果你的最终显示的新闻串的值为 s 的话
调用方法就是: <%=kellyPage(s)%>

演示地址: http://www.w2000.com.cn/sweet/doc/show.asp?id=404

此函数功能:显示长文章的页数并显示出当前页的新闻

注:这个函数一看就知道是在服务器端运行的,难免会有效率问题,如果你的服务器不太好的话,可以把这个函数放在客户端处理。。。。

<%Function kellyPage(Str)
   Str=Replace(Server.Htmlencode(Str),Chr(13),"<br>")
   Dim p,i,arr,returns,show,tolp,star,endstar
   Const countbr=20 '每页显示的行数
   If Request.QueryString("docp")="" Then
      p=1
   Else
      p=Cint(Request.QueryString("docp"))
      If p<1 Then p=1
   End If
   arr=Split(Str,"<br>")
   returns=""
   For i=(p-1)*countbr To p*countbr
      If i>Ubound(arr) Then Exit For
      returns=returns&arr(i)&"<BR>"
   Next
   returns=returns&"<br><br><br><br>"
   If p>1 Then
      returns=returns&"<a href="""&Request.ServerVariables("URL")&"?id="&Request.QueryString("id")&"&docp="&(Cint(p)-1)&""">上一页</a> "
   End If
   If Ubound(arr) Mod countbr<>0 Then
      tolp=Ubound(arr)\countbr+1
   Else
      tolp=Ubound(arr)\countbr
   End If
   Set arr=Nothing
   star=1:endstar=1
   If p>5 Then
      star=Cint(p)-5
      If Cint(star)<>1 Then returns=returns&".. "
   End If            
   If Cint(star)+9>tolp Then
      endstar=tolp
   Else
      endstar=Cint(star)+9
   End If
   For i=star To endstar
%>
<%      If i=Cint(p) Then
         returns=returns&"[<b><font color=red>"&i&"</font></b>] "
      Else
         returns=returns&"[<a href="""&Request.ServerVariables("URL")&"?id="&Request.QueryString("id")&"&docp="&i&""">"&i&"</a>] "
      End If
   Next
   If endstar<tolp Then returns=returns&".. "
   If p<tolp Then
         returns=returns&"<a href="""&Request.ServerVariables("URL")&"?id="&Request.QueryString("id")&"&docp="&(Cint(p)+1)&""">下一页</a>"
   End If
   kellyPage=returns
End Function
%>

 

原文地址:https://www.cnblogs.com/studio313/p/358315.html