分頁解決方案
以下文件描述了 MySQLi 和 PDO 支援的分頁解決方案。
轉到 https://github.com/rajdeeppaul/Pagination 並將 pagination.php
檔案下載到專案目錄中。假設你的目錄結構如下所示:
project directory
|
|--pagination.php (pagination script)
|--index.php (file where you want to use this pagination script)
假設你希望 URL 看起來像這樣:
http://example.com/index.php // user is on page 1
http://example.com/index.php?page=1 // user is on page 1
http://example.com/index.php?page=5 // user is on page 5
// etc ...
index.php
-
在
index.php
頁面中包含pagination.php
檔案,如下所示:require_once('pagination.php');
-
建立
Pagination
類的例項,如下所示:$pg = new Pagination($databaseDriver, $hostname, $username, $password, $databaseName);
建構函式方法採用以下引數,
(1)
$databaseDriver
:資料庫驅動,目前支援的驅動程式是 MySQLi 和 PDO
(2)$hostname
:主機名
(3)$username
:使用者名稱
(4)$password
:密碼
(4)$databaseName
:資料庫名稱例子):
$pg = new Pagination('mysqli', 'localhost', 'root', 'pass', 'pagination_db'); $pg = new Pagination('pdo', 'localhost', 'root', 'pass', 'pagination_db');
-
使用
setPaginationParameters()
方法設定分頁引數,如下所示:$pg->setPaginationParameters($rowsPerPage, $numOfPaginationLinks);
setPaginationParameters()
方法採用以下引數,(1)
$rowsPerPage
:每頁顯示的錶行數
(2)$numOfPaginationLinks
:每頁顯示的分頁連結數例子):
$pg->setPaginationParameters(10, 5);
-
呼叫
getResult()
方法根據 URL 查詢?page=X
顯示錶行,如下所示:$resultSet = $pg->getResult($queryString, $bindParameterArray, $globalGetArray, $keyFromURLQuery);
getResult()
方法採用以下引數,(1)
$queryString
:SELECT
查詢字串
(2)$bindParameterArray
:包含繫結變數或值的
陣列(3)$globalGetArray
:超全域性陣列$_GET
(4)$keyFromURLQuery
:來自 URL 查詢的鍵即page
例子):
$resultSet = $pg->getResult('SELECT * FROM pagination', NULL, $_GET, 'page'); $resultSet = $pg->getResult('SELECT * FROM pagination WHERE column1 = ? AND column2 = ?', array($value1, $value2), $_GET, 'page');
注意: 不要在查詢中指定任何
LIMIT
或OFFSET
子句,指令碼會處理這些。現在遍歷結果集即
$resultSet
陣列來訪問/顯示行詳細資訊,如下所示:foreach($resultSet as $row){ /* access/display row details */ /* $row['column1'], $row['column2'] etc. */ }
注意: 如果要檢視完整的陣列結構,請執行
var_dump($resultSet);
。 -
使用
getPaginationLinks()
方法顯示分頁連結,如下所示:$pgLinks = $pg->getPaginationLinks();
getPaginationLinks()
方法不接受任何引數,並返回以下格式的分頁連結陣列,array (size=3) 'prev' => @boolean 'links' => @array 'next' => @boolean
現在迴圈通過
$pgLinks
陣列來顯示 paginagtion 連結,如下所示:if(is_array($pgLinks) && count($pgLinks) && $pgLinks['prev']){ /* previous pages are available */ echo '« '; } if(is_array($pgLinks) && count($pgLinks) && count($pgLinks['links'])){ /* show pagination links */ foreach($pgLinks['links'] as $link){ echo '<a href="example.php?page='.$link.'">'.$link.'</a> '; } } if(is_array($pgLinks) && count($pgLinks) && $pgLinks['next']){ /* next pages are available */ echo '»'; }
注意: 如果要檢視完整的陣列結構,請執行
var_dump($pgLinks);
。
腳註: 你可以根據自己的選擇設定結果行和分頁連結的樣式。