/** * ページネーションクラス */ class Pager { var $total; // レコードの総数 var $pageSize // 各ページに表示されるレコードの数 var $; currentPage; // 現在のページ番号 var $offset; // レコードのオフセット var $numberOffset = 5; // ページ番号のオフセット ;リクエストパラメータ //================= //Fn: Pager //Function: Constructor //============= = ==== public function __construct ($total, $pageSize, $currentPage, $request = "") { $this->total = $total; $this->pageSize = $pageSize; $ this ->pageOffset(); $this->pageTotal(); $this->currentPage($currentPage); $this->request = $request; } //==== = ============ //Fn: pageOffset //関数: データベース レコード オフセット //================= パブリック関数pageOffset() { return $this->offset = $this->pageSize * ($this->currentPage - 1); } //============ = ==== //Fn: pageTotal //関数: 総ページ数を計算 //================== public function pageTotal() { return $this->pageTotal = ceil($this->total / $this->pageSize); } //================= / /Fn : currentPage //関数: ページ数を設定します //================== public function currentPage($currentPage) { if (isset($ currentPage)) { $this->currentPage = intval($currentPage); } else { $this->currentPage = 1; } return $this->currentPage; } //== ===== ========== //Fn: nextPage //機能: 次のページにジャンプします //================ == public function nextPage() { // レコード数を表示 $link = "合計 {$this->total} レコード "; // ページ ステップ サイズ $stepPage = $this-> ;currentPage ?ceil($this->currentPage / $this->numberOffset) : 1; // ページ番号設定 $numberPage = ($this->pageTotal > $this->numberOffset) ? $this->numberOffset : $this->pageTotal; // 1 ページのみ if ($this->total pageSize) { $link .= "[ホーム] ]|[最後のページ] "; } else { // 総ページ数と現在のページを設定します $link .= "ページ {$this->currentPage}/{$this->pageTotal}  ;"; // ホームページ $link .= "request}>[ホーム] " ; // 次の列 if ($stepPage > 1) { $lastIndex = ($stepPage - 1) * $this->numberOffset; $link .= "request}>["; } // 前のページ if ($this->currentPage > ; 1) { $prePage = $this->currentPage - 1; $link .="request}> ;["; } // 数値のページ番号 $i = ($stepPage - 1) * $this->numberOffset; for ($j = $i; $ j pageTotal; $j++) { $newPage = $j + 1; if ($this->currentPage == $j + 1 ) { $link .= " [" . ($j + 1) "]"; } else { $link .= "[" . ($j+1) . "]"; } } //次のページ if ($this->currentPage pageTotal){ $nextPage = $this->currentPage + 1; $link .= "[ >]"; } // 次の列 if ($stepPage total) { $nextPage = $stepPage * ($this- >numberOffset + 1) ; if ($nextPage pageTotal) { $link .= " request}>[> ;>]"; } } // 最後のページ if ($this->currentPage pageTotal) { $link .= "..pageTotal}{$this->request}>[最後のページ]"; } } return $link; } } ?> コードをコピー 2 番目、PHP ページング クラスの呼び出し例: 1. URL によって返されるページ数を取得します。 $cur_page = 1; if (isset($_GET["pageNo"])) { $cur_page = $_GET["pageNo"]; } コードをコピー 2,ページネーション オブジェクトを作成します。 $nums: 特定のデータの総数 $page_size: 各ページに表示される数 $cur_page: 現在のページ番号 $request: その他のオプションの URL リクエストパラメーター $pager = new Pager($ nums, $page_size , $cur_page, $request); コードをコピー 3、スマートな割り当て: $show = 表示するデータを取得します $this->gt;tpl->assign('numlink', $pager->nextPage()) // ページングリストを取得します $this -> ;tpl->assign('data',$show); コードをコピー ページネーション効果: 上記のページング コードは、アドレス バーに渡されるすべての情報を公開する URL リダイレクトを実装していません。これを改善することができます。