關于ASP分頁的問題,對于初學者是一個比較重要的問題,也是各個網站運用最為廣泛的技術,下面我就把我總結的一點小經驗介紹給大家(寫的不好,請大家指點) 1.原理:ASP分頁其實是將數據庫中的記錄分割成若干段“分屏顯示” ,為什么叫“分屏顯示”顯示,因為其實顯示的原始頁面只有1頁,通過控制數據庫顯示,來刷新頁面的顯示內容(可能一些朋友會誤會為動態產生若干頁面來顯示,呵呵,我剛剛學的時候也是這樣以為的) 2.用到的幾個函數 rs.pagesize--->定義一頁顯示記錄的條數 rs.recordcount--->統計記錄總數 rs.pagecount---->統計總頁數 這幾個函數相信大家都很快就明白意識了,不過還有一個函數它的用法可能理解起來難一點 rs.absolutepage--->將數據庫指針移動到當前頁要顯示的數據記錄的第一條記錄,比如有20條記錄的一個數據庫,我們分為10條記錄顯示一頁,當你的頁面為2時,通過使用rs.absolutepage將指針移動到第11條記錄處,依次類推.... 3.大家明白原理后我們開始來看一段分頁的程序,其中的一些文件我就不一一詳細講解了,不明白的朋友可以先看
http://www.2yup.com/asp/forum/branch.asp?pid=55084&pn=5 -------------------------------------------------- <!--#include file=conn1.asp--> <% dim m,n set rs=server.CreateObject("adodb.recordset") sqlstr="select * from message order by time desc" rs.open sqlstr,conn,3,3 rs.pagesize=10 '定義一頁顯示的記錄數目 tatalrecord=rs.recordcount '獲取記錄總數目 tatalpages=rs.pagecount '獲取分頁的數目 rs.movefirst ---------------------------- nowpage=request("page") '用request獲取當前頁數,注意page是自己定義的變量并非函數 -------------------------- if nowpage&"x"="x" then '處理頁碼為空時的情況 nowpage=1 else nowpage=cint(nowpage) '將頁碼轉換成數字型 end if -------------------------------- rs.absolutepage=nowpage '將指針移動到當前顯示頁的第一條記錄 ------------------------------- %> --------------------------------------------- <% n=1 while not rs.eof and n<=rs.pagesize response.Write(rs("user") & "<br>") response.Write(rs("tt") & "<br>") n=n+1 rs.movenext '顯示頁面的數據 wend %> ------------------------------------------- 共:<%=tatalpages%>頁 當前為:<%=nowpage%>頁 <%if nowpage>1 then%> <a href="fy.asp?page=<%=nowpage-1%>">上一頁</a> <%else%> 上一頁 <%end if%> <%for k=1 to tatalpages%> <%if k<>nowpage then %> <a href="fy.asp?page=<%=k%>"><%=k%></a> <%else%> <%=k%> <%end if%> <%next%> <%if nowpage < tatalpages then%> <a href="fy.asp?page=<%=nowpage+1%>">下一頁</a> <%else%> 下一頁 <%end if%> '加上頁碼連接 <%if nowpage<>1 then%> <a href="fy.asp?page=<%=1%>"> 首頁</a> <%else%> 首頁 <%end if%> <%if nowpage<>tatalpages then %> <a href="fy.asp?page=<%=tatalpages%>">末頁</a> <%else%> 末頁 <%end if%> ------------------------------------------------ 這樣一個分頁的就OK了,呵呵,寫的不好的地方請大家指點:)
|