麻辣家族討論版版's Archiver

小誌 發表於 2011-4-20 10:48

8-3 分頁瀏覽(8-3-1 分頁基礎)

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

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

小誌 發表於 2011-4-20 10:51

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

ex08_21.php(節錄)[code]<?
    $conn = mysql_connect("localhost", "root", "12345a");
    if(@mysql_select_db("STUDENTS", $conn))
     {
      //指定提取資料的校對字元表
      mysql_query("set character set big5");
      //資料庫存在,建立SQL命令字串
      $SQL="SELECT * FROM studentlist";
      //將回傳結果存放於變數中
      $datalist=mysql_query($SQL);
      //取得欄位數量
      $fieldnum=mysql_num_fields($datalist);
      //取得資料錄數量
      $rowsnum=mysql_num_rows($datalist);
      //計算總共有多少分頁
      if (($rowsnum / 10) >intval($rowsnum / 10))
       {
        $TotalPage=intval($rowsnum / 10)+1;
       }
      else
       {
        $TotalPage=intval($rowsnum / 10);
       }      
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title>範例ex08_21</title>
</head><body>
<?="共$rowsnum 筆資料;共$TotalPage 張分頁";?>
<center><table border=1 width=100%>
//…略[/code]

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可以是任何的型態,但在陣列或物件上不能使用此函式。

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供