本文介紹一款原生的PHP分頁類,分頁樣式有點類似bootstrap。
- <?php
-
- /* * *********************************************
- * @類名: page
- * @參數: $myde_total - 總記錄數
- * $myde_size - 一頁顯示的記錄數
- * $myde_page - 當前頁
- * $myde_url - 獲取當前的url
- * @功能: 分頁實現
- * @作者: 宋海閣
- */
-
- class page {
-
- private $myde_total; //總記錄數
- private $myde_size; //一頁顯示的記錄數
- private $myde_page; //當前頁
- private $myde_page_count; //總頁數
- private $myde_i; //起頭頁數
- private $myde_en; //結尾頁數
- private $myde_url; //獲取當前的url
- /*
- * $show_pages
- * 頁面顯示的格式,顯示鏈接的頁數為2*$show_pages+1。
- * 如$show_pages=2那么頁面上顯示就是[首頁] [上頁] 1 2 3 4 5 [下頁] [尾頁]
- */
- private $show_pages;
-
- public function __construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
- $this->myde_total = $this->numeric($myde_total);
- $this->myde_size = $this->numeric($myde_size);
- $this->myde_page = $this->numeric($myde_page);
- $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
- $this->myde_url = $myde_url;
- if ($this->myde_total < 0)
- $this->myde_total = 0;
- if ($this->myde_page < 1)
- $this->myde_page = 1;
- if ($this->myde_page_count < 1)
- $this->myde_page_count = 1;
- if ($this->myde_page > $this->myde_page_count)
- $this->myde_page = $this->myde_page_count;
- $this->limit = ($this->myde_page - 1) * $this->myde_size;
- $this->myde_i = $this->myde_page - $show_pages;
- $this->myde_en = $this->myde_page + $show_pages;
- if ($this->myde_i < 1) {
- $this->myde_en = $this->myde_en + (1 - $this->myde_i);
- $this->myde_i = 1;
- }
- if ($this->myde_en > $this->myde_page_count) {
- $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
- $this->myde_en = $this->myde_page_count;
- }
- if ($this->myde_i < 1)
- $this->myde_i = 1;
- }
-
- //檢測是否為數字
- private function numeric($num) {
- if (strlen($num)) {
- if (!preg_match("/^[0-9]+$/", $num)) {
- $num = 1;
- } else {
- $num = substr($num, 0, 11);
- }
- } else {
- $num = 1;
- }
- return $num;
- }
-
- //地址替換
- private function page_replace($page) {
- return str_replace("{page}", $page, $this->myde_url);
- }
-
- //首頁
- private function myde_home() {
- if ($this->myde_page != 1) {
- return "<a href='" . $this->page_replace(1) . "' title='首頁'>首頁</a>";
- } else {
- return "<p>首頁</p>";
- }
- }
-
- //上一頁
- private function myde_prev() {
- if ($this->myde_page != 1) {
- return "<a href='" . $this->page_replace($this->myde_page - 1) . "' title='上一頁'>上一頁</a>";
- } else {
- return "<p>上一頁</p>";
- }
- }
-
- //下一頁
- private function myde_next() {
- if ($this->myde_page != $this->myde_page_count) {
- return "<a href='" . $this->page_replace($this->myde_page + 1) . "' title='下一頁'>下一頁</a>";
- } else {
- return"<p>下一頁</p>";
- }
- }
-
- //尾頁
- private function myde_last() {
- if ($this->myde_page != $this->myde_page_count) {
- return "<a href='" . $this->page_replace($this->myde_page_count) . "' title='尾頁'>尾頁</a>";
- } else {
- return "<p>尾頁</p>";
- }
- }
-
- //輸出
- public function myde_write($id = 'page') {
- $str = "<div id=" . $id . ">";
- $str.=$this->myde_home();
- $str.=$this->myde_prev();
- if ($this->myde_i > 1) {
- $str.="<p class='pageEllipsis'>...</p>";
- }
- for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {
- if ($i == $this->myde_page) {
- $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "頁' class='cur'>$i</a>";
- } else {
- $str.="<a href='" . $this->page_replace($i) . "' title='第" . $i . "頁'>$i</a>";
- }
- }
- if ($this->myde_en < $this->myde_page_count) {
- $str.="<p class='pageEllipsis'>...</p>";
- }
- $str.=$this->myde_next();
- $str.=$this->myde_last();
- $str.="<p class='pageRemark'>共<b>" . $this->myde_page_count .
- "</b>頁<b>" . $this->myde_total . "</b>條數據</p>";
- $str.="</div>";
- return $str;
- }
-
- }
-
- ?>
復制代碼
分頁演示地址:http://www.sucaihuo.com/php/223.html
