分頁 關於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了,呵呵,寫的不好的地方請大家指點:)