簡(jiǎn)單好用的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);
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(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)文章
flutter實(shí)現(xiàn)倒計(jì)時(shí)加載頁面
這篇文章主要為大家詳細(xì)介紹了flutter實(shí)現(xiàn)倒計(jì)時(shí)加載頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
使用Android實(shí)現(xiàn)一個(gè)懸浮在軟鍵盤上的輸入欄
app開發(fā)中經(jīng)常會(huì)遇到一些輸入框要懸浮到軟鍵盤上方的需求,下面這篇文章主要給大家介紹了關(guān)于如何使用Android實(shí)現(xiàn)一個(gè)懸浮在軟鍵盤上的輸入欄的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Android使用httpPost向服務(wù)器發(fā)送請(qǐng)求的方法
這篇文章主要介紹了Android使用httpPost向服務(wù)器發(fā)送請(qǐng)求的方法,實(shí)例分析了Android針對(duì)HttpPost類的操作技巧,需要的朋友可以參考下2015-12-12
Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要給大家介紹了給大家Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Android Application級(jí)別自定義Toast
這篇文章主要為大家詳細(xì)介紹了Android Application級(jí)別自定義Toast,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android開發(fā)之完成登陸界面的數(shù)據(jù)保存回顯操作實(shí)例
這篇文章主要介紹了Android開發(fā)之完成登陸界面的數(shù)據(jù)保存回顯操作實(shí)現(xiàn)方法,結(jié)合完整實(shí)例形式較為詳細(xì)的分析了Android針對(duì)登錄數(shù)據(jù)的保存及回顯操作技巧,需要的朋友可以參考下2015-12-12
android教程使用webview訪問https的url處理sslerror示例
這篇文章主要介紹了android教程使用webview訪問https的url處理sslerror示例,大家參考使用吧2014-01-01

