Board logo

標題: 8-3 分頁瀏覽(8-3-1 分頁基礎) [打印本頁]

作者: 小誌    時間: 2011-4-20 10:48     標題: 8-3 分頁瀏覽(8-3-1 分頁基礎)

8-3   分頁瀏覽
當我們資料筆數太多,若要一次將全部資料送交瀏覽器中來閱讀,不僅造成瀏覽器解譯時的沉重負擔,資料下載的時間也會拖的很長,因此,當資料量大時,將資料分成多次提取來閱讀是個相當不錯的做法。

8-3-1   分頁基礎
「mysql_num_rows()」函數可用來獲知「mysql_quary()」函數中的資料記錄總筆數,其回傳值為一整數值,但筆者必須提醒您,利用「mysql_num_rows()」函數來獲知「mysql_quary()」函數中的資料記錄總筆數時,「mysql_num_rows()」函數必須讀全部記錄資料來計算筆數,所以比較消耗系統資源(筆者通常以SQL指令敘述來取得資料總筆數,而非以「mysql_num_rows()」函數來取得總筆數)。
例如:
  1. //取得資料錄數量
  2. $rowsnum=mysql_num_rows($datalist);
  3. //列印總筆數
  4. echo "資料總筆數 $rowsnum";
複製代碼

作者: 小誌    時間: 2011-4-20 10:51

得知資料的總筆數後,要將資料錄分頁顯示之前,必須決定每一頁要有多少數量的資料記錄,而全部的資料記錄將要分成多少頁,例如下例中,我們將每10筆資料為一單位分頁顯示:
  1. //取得欄位數量
  2.       $fieldnum=mysql_num_fields($datalist);
  3.       //取得資料錄數量
  4.       $rowsnum=mysql_num_rows($datalist);
  5.       //計算總共有多少分頁
  6.       if (($rowsnum / 10) >intval($rowsnum / 10))
  7.        {
  8.         $TotalPage=intval($rowsnum / 10)+1;
  9.        }
  10.       else
  11.        {
  12.         $TotalPage=intval($rowsnum / 10);
  13.        }
複製代碼
先利用「mysql_num_rows()」函數取得總資料筆數,接著計算分頁的總頁數TotalPage,若資料錄數量無法整除,也就是不滿一頁的剩餘資料錄也要算一頁,例如:利用「mysql_num_rows()」函數告訴我們共讀取「studentlist(通訊錄)」資料表中466筆資料,我們設定顯示每頁10筆資料,則總分頁為「47」,46個滿頁加上一個只有6筆資料錄的分頁。
[attach]5653[/attach]
圖8-24  範例ex08_21.php。

ex08_21.php(節錄)
  1. <?
  2.     $conn = mysql_connect("localhost", "root", "12345a");
  3.     if(@mysql_select_db("STUDENTS", $conn))
  4.      {
  5.       //指定提取資料的校對字元表
  6.       mysql_query("set character set big5");
  7.       //資料庫存在,建立SQL命令字串
  8.       $SQL="SELECT * FROM studentlist";
  9.       //將回傳結果存放於變數中
  10.       $datalist=mysql_query($SQL);
  11.       //取得欄位數量
  12.       $fieldnum=mysql_num_fields($datalist);
  13.       //取得資料錄數量
  14.       $rowsnum=mysql_num_rows($datalist);
  15.       //計算總共有多少分頁
  16.       if (($rowsnum / 10) >intval($rowsnum / 10))
  17.        {
  18.         $TotalPage=intval($rowsnum / 10)+1;
  19.        }
  20.       else
  21.        {
  22.         $TotalPage=intval($rowsnum / 10);
  23.        }      
  24. ?>
  25. <html>
  26. <head>
  27. <meta http-equiv="Content-Type" content="text/html; charset=big5">
  28. <title>範例ex08_21</title>
  29. </head><body>
  30. <?="共$rowsnum 筆資料;共$TotalPage 張分頁";?>
  31. <center><table border=1 width=100%>
  32. //…略
複製代碼

作者: pix756    時間: 2012-8-14 17:09

小誌大大您好,

分頁的這一段我思考好了久。

if (($rowsnum / 10) >intval($rowsnum / 10))
{
$TotalPage=intval($rowsnum / 10)+1;
}
else
{
$TotalPage=intval($rowsnum / 10);
}  

其中的 if (($rowsnum / 10) >intval($rowsnum / 10))

這一段我一直不了解。

想請小誌大大為我解惑一下。

在此先謝謝您了。:)
作者: 小誌    時間: 2012-8-15 15:19

比對是否有未滿頁的資料錄
例如10筆1頁,你思考一下,那78筆算幾頁?

intval
(PHP3 , PHP4)
intval --- 取得變數的整數值
語法 : int intval(mixed var, int [base] );
說明 :
傳回參數var的整數值,使用指定的base做為轉換的基底(預設值為10),var可以是任何的型態,但在陣列或物件上不能使用此函式。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)