简单好用的PHP分页类
作者:我才是撸大师 发布时间:2023-11-22 09:32:39
标签:PHP,分页类
本文为大家分享了两段PHP分页类,很实用,供大家参考,具体内容如下
<?php
class Page {
private $total; //总记录
private $pagesize; //每页显示多少条
private $limit; //limit
private $page; //当前页码
private $pagenum; //总页码
private $url; //地址
private $bothnum; //两边保持数字分页的量
//构造方法初始化
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;
}
//获取当前页码
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;
} //数字目录
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 是数据集的总条数,$_pagesize 是每页显示的数量.
?>
第二个分页类:
<?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);
}
}


猜你喜欢
- 偶然从pytorch讨论论坛中看到的一个问题,KL divergence different results from tf,kl dive
- 1.安装1.1 创建虚拟环境mkdir myprojectcd myprojectpython3 -m venv venv1.2 进入虚拟环
- 从matplotlib工具栏源码探析一(禁用工具栏、默认工具栏和工具栏管理器三种模式的差异)一文可知matplotlib内置实现了多个工具项
- 一、问题描述 SQL Plus WorkSheet是一个窗口图形界面的SQL语句编辑器,对于那些喜欢窗口界面而不喜欢字符界面的用户,该工具相
- 1、生成正态分布数据并绘制概率分布图import pandas as pdimport numpy as npimport matplotl
- 为什么要写这篇文章其实是因为最近学到了python的property装饰器的相关知识,刚开始学得云里雾里,于是乎,看了许多相关博客,不巧,大
- 本文实例讲述了原生JS实现Ajax通过GET方式与PHP进行交互操作。分享给大家供大家参考,具体如下:一、代码conn.php<?ph
- 介绍还记得你在小学时学习如何加减数字吗?现在,你也可以对图像做同样的事情!输入图像可以进行算术运算,例如加法、减法和按位运算(AND、OR、
- 本文实例为大家分享了微信小程序实现多文件或者图片上传的具体代码,供大家参考,具体内容如下html<view class="l
- 一、概念介绍1、POST请求:HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DEL
- 避坑1:RTX30系列显卡不支持cuda11.0以下版本,具体上限版本可自行查阅:方法一,在cmd中输入nvidia-smi查看方法二:由此
- 实战场景Python 工程师在日常的工作中,经常会碰到解析和处理PDF文件的情况,实战中需求主要分为如下情况:提取 PDF 中的文字将 PD
- MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值
- 又有人说设session.timeout=99999。这种同样不行,session有最大时间限制。我经过测试发现最大值为24小时,也就是说你
- 1. 图片验证码1.1 工具类-utility.py将所有和图片验证码有关的方法放在类 ImageCodeimport randomimpo
- 提到 super,最直接的想法就是它代表了父类,替父类执行某些方法。但是理解也仅止步于此,下面对 super 做进一步理解super 的完整
- 原来sql还有个stuff的函数,很强悍。 一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4
- 本文实例讲述了JS实现屏蔽网页右键复制及ctrl+c复制的方法。分享给大家供大家参考,具体如下:老是有些网站会屏蔽你的鼠标右键或者用快捷键复
- 编码规范Python 编码规范重要性的原因用一句话来概括就是:统一的编码规范可以提高开发效率。无论你是 编程者,还是 阅读者,好的规范能让你
- csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格:就可以存储为csv文件,文件内容