Web頁面分頁的幾種方式

2021-08-21 14:57:13 字數 3699 閱讀 2817

在開發過程中,經常做的一件事,也是最基本的事,就是從資料庫中查詢資料,然後在客戶端顯示出來。當資料少時,可以在乙個頁面內顯示完成。然而,如果查詢記錄是幾百條、上千條呢?直接乙個頁面顯示完全的話,**得多長啊。。。。。。這時,我們可以用分頁技術。

何為分頁?效果圖如下:

這裡總共查詢了100條記錄,如果一次性顯示的話**會很多行,使用者體驗不佳。而我們採用分頁顯示的話,一頁顯示10條記錄,共十頁。使用者可以自行翻閱,記錄少,清晰顯示。

下面談談分頁效果的實現,思路有三種:

其一:純js實現分頁。一次性查詢記錄並載入到html的table中。然後通過選擇性地顯示某些行來達到分頁顯示的目的。這是一種偽分頁,障眼法而已。只能用於資料少的情況下。一旦資料多了,十幾萬條資料載入到html中會變得很慢。而且不實時,一次載入完後資料就寫死在頁面了,若資料庫中有變化,瀏覽器端顯示的仍是上次載入過來的資料。

首先:用table來顯示查詢出來的記錄們,全部顯示。

string user_id, user_name, user_***, user_phone, user_age;

while (sqlrst.next())

%>

然後,在js中修改table中某些行顯示,某些行隱藏。

其二:一次查詢,分批顯示。

int intpagesize = 10;             //一頁顯示的記錄數 

int introwcount; //記錄總數

int intpagecount; //總頁數

string strpage; //從表單或url傳送的待顯示頁碼

int intpage; //待顯示頁碼 ,由strpage轉換成的整數

//---計算記錄總數的第一種方法:查詢出所有記錄,移動結果集指標到最後一條,獲取最後一條記錄的行號

//查詢所有資料

resultset sqlrst = sqlstmt.executequery("select * from user");

//獲取記錄總數

sqlrst.last(); //游標在最後一行

introwcount = sqlrst.getrow(); //獲得當前行號,即總記錄數

//記算總頁數

intpagecount = (int)math.ceil(introwcount/(intpagesize*1.0));

//將記錄指標定位到待顯示頁的第一條記錄上 

sqlrst.absolute((intpage - 1) * intpagesize + 1);

//顯示資料

int i=0;

string user_id, user_name, user_***, user_phone, user_age;

while (i < intpagesize && !sqlrst.isafterlast())

%>

其三:在服務端分頁。跳到第n頁才查詢、顯示第n頁內容。要點就是根據客戶端**的「頁面」計算出資料庫要查詢的當前頁面的第一條記錄的位置。優點:實時性:跳頁才查詢。資料量小:只載入當前頁的記錄進行顯示。

重點在於兩條語句:select count(*) from ...:查詢得到記錄總條數

select * from .. limit pageno,rowscount:查詢從第pageno條開始的rowscount條資料。

int pages=0;            //待顯示頁面

int count=0; //總條數

int totalpages=0; //總頁數

int limit=10; //每頁顯示記錄條數

//計算記錄總數的第二種辦法:使用mysql的聚集函式count(*)

resultset sqlrst = sqlstmt.executequery("select count(*) from user");

if(sqlrst.next())

//由記錄總數除以每頁記錄數得出總頁數

totalpages = (int)math.ceil(count/(limit*1.0));

//獲取跳頁時傳進來的當前頁面引數

string strpage = request.getparameter("pages");

//判斷當前頁面引數的合法性並處理非法頁號(為空則顯示第一頁,小於0則顯示第一頁,大於總頁數則顯示最後一頁)

if (strpage == null) else catch(exception e)

if (pages < 1)

if (pages > totalpages)

}//由(pages-1)*limit算出當前頁面第一條記錄,由limit查詢limit條記錄。則得出當前頁面的記錄

sqlrst = sqlstmt.executequery("select * from user order by user_id limit " + (pages - 1) * limit + "," + limit);

while (sqlrst.next())

跳頁的實現:跳頁是通過重定向來實現的,通過向當前網頁傳進待顯示的pages,在跳轉後根據pages重新算出頁面顯示的第一條,查limit條顯示。

附:常見資料庫分頁查詢語句

1.oracle資料庫分頁

select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>=startrow

2.db2資料庫分頁

select * from (select rownumber() over() as rc,a.* from (select * from 表名 order by列名) as a) where rc between startrow and endrow

3.sql server 2000資料庫分頁

select top pagesize * from 表名 where 列名 not in(select top pagesize*page 列名 from 表名 order by列名) order by列名

4.sql server 2005資料庫分頁

select * from (select 列名,row_number() over(order by 列名1) as 別名from 表名) as t where t.列名1>=startrow and t.列名1<=endrow

5.mysql資料庫分頁

select * from 表名 limit startrow,pagesize

(pagesize為每頁顯示的記錄條數)

6.postgresql資料庫分頁

select * from 表名 limit pagesize,offset startrow

(pagesize為每頁顯示的記錄條數)

web網頁 頁面布局的幾種方式

網頁基本布局方式 1 流式布局 fluid 流布局與固定寬度布局基本不同點 就在於對 尺寸的側量單位不同。固定寬度布局使用的是畫素,但是流布局使用的是百分比,這位網頁提供了很強的可塑性和流動性。換句話說,通過設定百分比,我們不需要考慮裝置尺寸或者螢幕寬度大小了,可以為每種情形找到一種可行的方案,應為...

web網頁 頁面布局的幾種方式

流布局使用的是百分比,這位網頁提供了很強的可塑性和流動性。通過設定百分比,我們不需要考慮裝置尺寸或者螢幕寬度大小了,可以為每種情形找到一種可行的方案,應為你的設計尺寸將適應所有的裝置尺寸。流布局與 查詢和優化樣式技術密切相關。在固定布局中,網頁的寬度是必須指定為乙個畫素值,一般為960px。因為96...

web網頁 頁面布局的幾種方式

網頁基本布局方式 1 流式布局 fluid 流布局與固定寬度布局基本不同點 就在於對 尺寸的側量單位不同。固定寬度布局使用的是畫素,但是流布局使用的是百分比,這位網頁提供了很強的可塑性和流動性。換句話說,通過設定百分比,我們不需要考慮裝置尺寸或者螢幕寬度大小了,可以為每種情形找到一種可行的方案,應為...