ASP编程:ADO组件之分页程序
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。应当来讲,学会了怎样拔出纪录,怎样显现纪录,那末如今复杂的完全的文章体系、旧事体系和留言体系不成成绩。那接着上面的成绩就是:跟着信息内容的不段增添,独自经由过程一张页面显现一切信息是不可也是很不睬性的。以是,办理的举措就是接纳分页手艺。<P> 1,rs.RecordCount很明显,RecordCount就是用来显现数据库表中一共几笔记录的,也能够抽象地说表中一共有几行。常常用在分页中就是一共有N篇文章等总计的信息显现。<P> 2,rs.PageSize
rs.PageSize也就是一页的巨细,也就暗示一张ASP页能够显现纪录的条数。值是本人界说的,好比常常看到的每页显现N篇文章之类的信息。<P> 3,rs.AbsolutePage和rs.pagecount
说到分页,必定不克不及不提到rs.AbsolutePage。纪录集的AbsolutePage属性最次要的感化就是决意着以后显现的是第几页。它的值是有根据的,指定了rs.PageSize,那末rs.pagecount的信息值就是rs.RecordCount和rs.PageSize整除了局。好比:总信息纪录rs.RecordCount共20条,每页显现条数rs.PageSize设为5条,那末页数rs.pagecount数就是20/5=4页次,而rs.AbsolutePage则就只能是第1页,第2页……第4页。<P> 说到如今,弄个详细程序来调试一下。持续对showit.asp举行修正以下:<P>
<!--#includefile="conn.asp"--><P><%
Setrs=Server.CreateObject("ADODB.Recordset")
sql="Select*fromcnarticleorderbycn_iddesc"
rs.Opensql,conn,1,1
%><P><%
page=request.querystring("page")page值为承受值
rs.PageSize=2每页显现纪录数
rs.AbsolutePage=Page显现以后页即是吸收的页数
%><P><%
Fori=1tors.PageSize使用fornext轮回顺次读出以后页的纪录
ifrs.EOFthen
ExitFor
endif
response.write("<br>文章内容是:"&rs("cn_content"))
rs.MoveNext
next%><%
rs.close
Setrs=Nothing
conn.close
setconn=nothing
%>
<P> HERE,你调试的条件就是数据库中的纪录绝对要年夜于4条,如许测试效果才分明;另有测试的办法就是在showit.asp前面增加?page=1大概?page=2等调试察看网页显现效果。<P> 实在,说究竟,显现数据库内容就是<P>
<%
Fori=1tors.PageSize
ifrs.EOFthen
ExitFor
endif
response.write("<br>文章内容是:"&rs("cn_content"))
rs.MoveNext
next%>
<P> 起的感化,但设想一下:该程序应当都只能显现出2条信息(一向稳定的2条信息)。但为何加上?page=1和?page=2会显现分歧的了局呢?……那相对就是rs.AbsolutePage的感化了。这个弄分明,信任分页的全体架构就有点头绪了。<P>
<!--#includefile="conn.asp"--><P><%
Setrs=Server.CreateObject("ADODB.Recordset")
sql="Select*fromcnarticle"
rs.Opensql,conn,1,1
%><P><%filepath=request.servervariables("path_info")%>
<%
page=request.querystring("page")page值为承受值
rs.PageSize=2每页显现纪录数
ifNotIsEmpty(page)then假如page已初始化...
ifNotIsNumeric(page)then判别page值是不是为数字
page=1
else
Page=cint(page)吸收page并化为数字型赋给page变量
endif
ifPage>rs.PageCountthen假如吸收的页数年夜于总页数
rs.AbsolutePage=rs.PageCount设置以后显现页即是最初页
elseifPage<=0then假如page小于即是0
rs.AbsolutePage=1设置以后显现页即是第一页
else
rs.AbsolutePage=Page假如年夜于零,显现以后页即是吸收的页数
endif
else
rs.AbsolutePage=1
endif
Page=rs.AbsolutePage%><P><%
Fori=1tors.PageSize使用fornext轮回顺次读出以后页的纪录
ifrs.EOFthen
ExitFor
endif
response.write("文章题目是:"&rs("cn_title"))
response.write("<br>文章作者是:"&rs("cn_author"))
response.write("<br>文章到场工夫是:"&rs("cn_time"))
response.write("<br>文章内容是:"&rs("cn_content"))
response.write("<hr>")
rs.MoveNext
Next
%><P><formaction="<%=filepath%>"method="get">
<!--起首包管总页数不为1、不为0-->
<%ifrs.pagecount1andrs.pagecount0then%>
<!--假如以后页数年夜于1,不管什么时候都应显现首页和上一页的毗连-->
<%ifpage>1then%>
[<aHref="<%=filepath%>?Page=<%=1%>">首页</a>]
[<aHref="<%=filepath%>?Page=<%=page-1%>">上一页</a>]
<!--假如以后页数年夜于1而且小于总页面数时,显现出尾页和下一页的毗连-->
<%ifpage<rs.pagecountthen%>
[<aHref="<%=filepath%>?Page=<%=page+1%>">下一页</a>]
[<aHref="<%=filepath%>?Page=<%=rs.PageCount%>">尾页</a>]
<!--假如以后页数年夜于1而且仍年夜于或即是总页面数时,不显现出尾页和下一页的毗连-->
<%else%>
[下一页][尾页]
<%endif%>
<!--不然,以后页数不年夜于1,则只显现尾页和下一页的毗连-->
<%else%>
[首页][上一页]
[<aHref="<%=filepath%>?Page=<%=page+1%>">下一页</a>]
[<aHref="<%=filepath%>?Page=<%=rs.PageCount%>">尾页</a>]
<%endif%>
<!--终极,总页数若为1、为0则没有任何毗连-->
<%else%>
[首页][上一页][下一页][尾页]
<%endif%>[页次:<fontcolor=red><b><%=page%></b></font>/<%=rs.PageCount%>]
[共<%=rs.RecordCount%>篇<fontcolor=red><b><%=rs.PageSize%></b></font>篇/页]
转到<inputname="page"size=5value="<%=page%>">页
<inputtype="submit"value="Enter">
</form>
<%
rs.close
Setrs=Nothing
conn.close
setconn=Nothing
%>
<P> 长长的分页代码,弄懂是真不简单,平台援用起来还必要修正也是对照贫苦。最初能做成一个函数,下次挪用起来就很便利了。<P>
<%
functionpagination(pagecount,pagesize,page,resultcount)
Dimquery,a,x,temp
action="http://"&Request.ServerVariables("HTTP_HOST")_
&Request.ServerVariables("SCRIPT_NAME")
query=Split(Request.ServerVariables("QUERY_STRING"),"&")
ForEachxInquery
a=Split(x,"=")
IfStrComp(a(0),"page",vbTextCompare)0Then
temp=temp&a(0)&"="&a(1)&"&"
EndIf
Next
Response.Write("<formmethod=getdocument.location="_
&action&"?"&temp&"Page=+this.page.value;returnfalse;"">")
ifpage<=1then
Response.Write("[首页][上一页]")
else
Response.Write("[<ahref="&action&"?"&temp&"Page=1>_
首页</a>]")
Response.Write("[<ahref="&action&"?"&temp&"Page="_
&(Page-1)&">上一页</a>]")
endififpage>=pagecountthen
Response.Write("[下一页][尾页]")
else
Response.Write("[<ahref="&action&"?"&temp&"Page="_
&(Page+1)&">下一页</a>]")
Response.Write("[<ahref="&action&"?"&temp&"Page="_
&pagecount&">尾页</a>]")
endif
Response.Write("[页次:<fontcolor=red>"&page&"</font>/"&pageCount)
Response.Write("][共"&resultcount&"条<fontcolor=red>"&pagesize_
&"</font>条/页]")
Response.Write("转到"&"<inputname=pagesize=4value="&page&">"_
&"页<inputtype=submitvalue=go>")
Endfunction
%>
<P> 如要援用,则能够:<P>
<%callpagination(rs.PageCount,rs.pagesize,page,rs.RecordCount)%>
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
页:
[1]