簡單好用的PHP分頁類
本文為大家分享了兩段PHP分頁類,很實(shí)用,供大家參考,具體內(nèi)容如下
<?php class Page { private $total; //總記錄 private $pagesize; //每頁顯示多少條 private $limit; //limit private $page; //當(dāng)前頁碼 private $pagenum; //總頁碼 private $url; //地址 private $bothnum; //兩邊保持?jǐn)?shù)字分頁的量 //構(gòu)造方法初始化 public function __construct($_total, $_pagesize) { $this->total = $_total ? $_total : 1; $this->pagesize = $_pagesize; $this->pagenum = ceil($this->total / $this->pagesize); $this->page = $this->setPage(); $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize"; $this->url = $this->setUrl(); $this->bothnum = 2; } //攔截器 private function __get($_key) { return $this->$_key; } //獲取當(dāng)前頁碼 private function setPage() { if (!empty($_GET['page'])) { if ($_GET['page'] > 0) { if ($_GET['page'] > $this->pagenum) { return $this->pagenum; } else { return $_GET['page']; } } else { return 1; } } else { return 1; } } //獲取地址 private function setUrl() { $_url = $_SERVER["REQUEST_URI"]; $_par = parse_url($_url); if (isset($_par['query'])) { parse_str($_par['query'],$_query); unset($_query['page']); $_url = $_par['path'].'?'.http_build_query($_query); } return $_url; } //數(shù)字目錄 private function pageList() { for ($i=$this->bothnum;$i>=1;$i--) { $_page = $this->page-$i; if ($_page < 1) continue; $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> '; } $_pagelist .= ' <span class="me">'.$this->page.'</span> '; for ($i=1;$i<=$this->bothnum;$i++) { $_page = $this->page+$i; if ($_page > $this->pagenum) break; $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> '; } return $_pagelist; } //首頁 private function first() { if ($this->page > $this->bothnum+1) { return ' <a href="'.$this->url.'">1</a> ...'; } } //上一頁 private function prev() { if ($this->page == 1) { return '<span class="disabled">上一頁</span>'; } return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一頁</a> '; } //下一頁 private function next() { if ($this->page == $this->pagenum) { return '<span class="disabled">下一頁</span>'; } return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一頁</a> '; } //尾頁 private function last() { if ($this->pagenum - $this->page > $this->bothnum) { return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> '; } } //分頁信息 public function showpage() { $_page .= $this->first(); $_page .= $this->pageList(); $_page .= $this->last(); $_page .= $this->prev(); $_page .= $this->next(); return $_page; } } ?>
分頁樣式如下圖所示:
使用說明:
<?php $_page = new Page($_total,$_pagesize); //其中 $_total 是數(shù)據(jù)集的總條數(shù),$_pagesize 是每頁顯示的數(shù)量. ?>
第二個(gè)分頁類:
<?php /** * page.class.php 分頁類 * 日期:2015-04-05 * http://aowana.sinaapp.com */ class page { public static $url; public static $page; public static $total; public static $size; public static $number; public static $max; public static $action = array('previous', 'number', 'next'); public static function show($url, $page, $total, $size=10, $number=11) { self::$url = $url; self::$page = $page; self::$total = $total; self::$size = $size; self::$number = $number; self::$max = ceil($total / $size); $str = ''; foreach (self::$action as $name) $str .= self::$name(); return $str; } public static function first() { if (self::$page > 2) { $url = self::url(1); return "<li id=\"pbfirst\"><a href=\"{$url}\" title=\"首頁\">首頁</a></li>"; } } public static function previous() { if (self::$page > 1) { $url = self::url(self::$page - 1); return "<li id=\"pbprevious\"><a href=\"{$url}\" title=\"上一頁\">上一頁</a></li>"; } } public static function number() { $str = ''; $f = self::$number % 2 ? (self::$number - 1) / 2 : self::$number / 2; $s = self::$page - $f; $e = self::$page + $f; if (self::$page < ($f + 1)) { $s = 1; $e = self::$number; $e = $e > self::$max ? self::$max : $e; } if (self::$page > (self::$max - $f)) { $s = self::$max - self::$number; $s = $s < 1 ? 1 : $s; $e = self::$max; } for ($i=$s; $i<=$e; $i++) { $url = self::url($i); if ($i == self::$page) $str .= "<li><strong>{$i}</strong></li>"; else $str .= "<li><a href=\"{$url}\" title=\"第{$i}頁\">{$i}</a></li>"; } return $str; } public static function next() { if (self::$page < self::$max) { $url = self::url(self::$page + 1); return "<li id=\"pbnext\"><a href=\"{$url}\" title=\"下一頁\">下一頁</a></li>"; } } public static function end() { if ((self::$max - self::$page) > 1) { $url = self::url(self::$max); return "<li id=\"pbend\"><a href=\"{$url}\" title=\"末頁\">末頁</a></li>"; } } public static function url($page) { return str_replace('{page}', $page, self::$url); } }
以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)php程序設(shè)計(jì)有所幫助。
- 功能強(qiáng)大的php分頁函數(shù)
- PHP實(shí)現(xiàn)適用于文件內(nèi)容操作的分頁類
- 基于PHP實(shí)現(xiàn)數(shù)據(jù)分頁顯示功能
- PHP框架Laravel插件Pagination實(shí)現(xiàn)自定義分頁
- PHP MSSQL 分頁實(shí)例
- PHP實(shí)現(xiàn)可自定義樣式的分頁類
- 兩款萬能的php分頁類
- php實(shí)現(xiàn)分頁功能的3種方法
- jQuery+Ajax+PHP+Mysql實(shí)現(xiàn)分頁顯示數(shù)據(jù)實(shí)例講解
- Thinkphp3.2.3分頁使用實(shí)例解析
相關(guān)文章
Android常用正則表達(dá)式驗(yàn)證工具類(實(shí)例代碼)
正則表達(dá)式,相信接觸過編程的人都知道,但是大部分人應(yīng)該是每次用的時(shí)候現(xiàn)找,但對其語法應(yīng)該只是一知半解 。下面小編給大家分享Android常用正則表達(dá)式驗(yàn)證工具類,感興趣的朋友一起看看吧2017-10-10Android5.0以上實(shí)現(xiàn)全透明的狀態(tài)欄方法(仿網(wǎng)易云界面)
下面小編就為大家分享一篇Android5.0以上實(shí)現(xiàn)全透明的狀態(tài)欄方法(仿網(wǎng)易云界面),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android SharedPreferences的使用分析
本篇文章小編為大家介紹,Android SharedPreferences的使用分析。需要的朋友參考下2013-04-04Android自定義帶增長動畫和點(diǎn)擊彈窗提示效果的柱狀圖DEMO
這篇文章主要介紹了Android自定義帶增長動畫和點(diǎn)擊彈窗提示效果的柱狀圖的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11淺析Kotlin使用infix函數(shù)構(gòu)建可讀語法流程講解
這篇文章主要介紹了淺析Kotlin使用infix函數(shù)構(gòu)建可讀語法,我們在Kotlin中就多次使用A to B這樣的語法結(jié)構(gòu)構(gòu)建鍵值對,包括Kotlin自帶的mapOf()函數(shù),這種語法結(jié)構(gòu)的優(yōu)點(diǎn)是可讀性強(qiáng)2023-01-01android實(shí)現(xiàn)按鈕獲取焦點(diǎn)延遲加載
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)按鈕獲取焦點(diǎn)延遲加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Android開發(fā) 旋轉(zhuǎn)屏幕導(dǎo)致Activity重建解決方法
Android開發(fā)文檔上專門有一小節(jié)解釋這個(gè)問題。簡單來說,Activity是負(fù)責(zé)與用戶交互的最主要機(jī)制,接下來為您詳細(xì)介紹2012-11-11Android開發(fā)之簡單文件管理器實(shí)現(xiàn)方法
這篇文章主要介紹了Android開發(fā)之簡單文件管理器實(shí)現(xiàn)方法,簡單實(shí)現(xiàn)了Android的文件目錄查看,文件重命名,打開,刪除等功能,需要的朋友可以參考下2016-01-01Android編程實(shí)現(xiàn)監(jiān)控各個(gè)程序流量的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)監(jiān)控各個(gè)程序流量的方法,涉及Android針對應(yīng)用包的遍歷,權(quán)限控制及相關(guān)屬性操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12