分頁解決方案
以下文件描述了 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);。
腳註: 你可以根據自己的選擇設定結果行和分頁連結的樣式。