php 实现分页功能(class封装了功能)

article/2025/10/12 23:16:06

前言

分页是一个很常见的功能,我这里提供了分类类(class),用于前端页面中的四个按钮:

  1. 首页
  2. 下一页
  3. 上一页
  4. 尾页
    在这里插入图片描述
    上面的演示非常不直观,但足可以证明这个类可以完成分页功能。

完整的代码

附有非常详细的注释,但需要有一定的 php 基础。

<?php/*
* //TODO 分页类(前端需传递两个参数)
* @请求方式: GET
* @num: 每页要显示多少条数据
* @sum: 一共有多少条数据
*/class separatePage {protected $num;//每页显示多少条数据protected $sum;//总共有多少条数据protected $page;//当前页protected $totalPage;//总页数protected $url;//路径public function __construct($num, $sum){//!构造器$this -> num = $num;//每页显示多少条数据$this -> sum = $sum;//总共有多少条数据$this -> totalPage = $this -> getTotalPage();//得到总页数$this -> page = $this -> getPage();//得到当前页$this -> url = $this -> getUrl();//得到路径}//TODO 主功能核心函数(借助辅助函数返回完整URL)public function allUrl(){//!功能:所有URL(返回给前端用)return ['首页' => $this -> firstUrl(),//首页'下一页' => $this -> nextUrl(),//下一页'上一页' => $this -> prevUrl(),//上一页'尾页' => $this -> endUrl()//尾页];}public function firstUrl(){//!功能:[首页]路径return $this -> setUrl('page=1');}public function nextUrl(){//!功能:[下一页]路径if($this -> page + 1 > $this -> totalPage){//如果当前页+1(下一页)后大于总页数$page = $this -> totalPage;//则直接跳转到尾页}else {//如果没超过总页数$page = $this -> page + 1;//则页码+1即可}return $this -> setUrl('page=' . $page);//返回}public function prevUrl(){//!功能:[上一页]路径if($this -> page - 1 < 1){//如果当前页-1(上一页)后小于1$page = 1;}else {//如果没小于1$page = $this -> page - 1;//则页码-1即可}return $this -> setUrl('page=' . $page);//返回}public function endUrl(){//!功能:[尾页]路径return $this -> setUrl('page=' . $this -> totalPage);}// TODO 辅助性工具函数(帮助主功能函数)protected function getTotalPage(){//!功能:获取总页数return ceil($this -> sum / $this -> num);//公式:总条数/每页显示数(向上取整)}protected function getPage(){//!功能:获取当前页if(empty($_GET['page'])){//判断前端参数有效值(传递参数是否为空)$page = 1;//如果为空则直接默认第一页}else if($_GET['page'] > $this -> totalPage){//判断前端参数有效值(是否大于总页数)$page = $this -> totalPage;//如果大于直接默认总页数}else if($_GET['page'] < 1){//判断前端参数有效值(是否小于1)$page = 1;//如果小于直接默认第一页}else{//前端传递的参数已合法(直接使用)$page = $_GET['page'];}return $page;//返回}protected function getUrl(){//!功能:获取路径(利用$_SERVER)$scheme = $_SERVER['REQUEST_SCHEME'];//协议名(http/https/ftp)$host = $_SERVER['SERVER_NAME'];//主机名(www.baidu.com/www.php.net)$port = $_SERVER['SERVER_PORT'];//端口号$uri = $_SERVER['REQUEST_URI'];//路径及请求参数$uriArray = parse_url($uri);//将路径及请求参数转换为关联数组$path = $uriArray['path'];//获取当前路径(/index.php)if(!empty($uriArray['query'])){//判断路径中是否存在请求参数(?name=a&age=15)parse_str($uriArray['query'], $array);//不为空则转为关联数组unset($array['page']);//清除请求参数中page参数(防止两个page参数出现)$query = http_build_query($array);//再拼接起来}if($query != ''){//为空则无需清除后拼接$path = $path . '?' . $query;//请求参数拼接}return $scheme . '://' . $host . ':' . $port . $path;//拼接完整的路径}protected function setUrl($e){//!功能:返回真实路径(给前端用)if(strstr($this -> url, '?')){//首先判断路径中有没有请求参数$url = $this -> url . '&' . $e;//拼接page参数}else{//没有请求参数$url = $this -> url . '?' . $e;//拼接page参数}return $url;//返回}//TODO 从数据库中取出数据给前端(使用SQL limit)public function limit(){//!功能:算出limit偏移$offset = ($this -> page - 1) * ($this -> num);//算出偏移return $offset . ',' . $this -> num;}public function data(){# 连接数据库...# 执行SQL语句: select * from list limit limit();# 做处理后连页码带数据返回给前端}
}

如何使用

第一步接收前端请求参数,第二步实例化类,第三步返回。

# 接收前端请求参数(2个)# num: 每页要显示多少条数据# sum: 一共有多少条数据# 实例化类(5为num)
$test = new separatePage(5, 100);//这里填前端请求参数# 返回URL与数据库中的记录# $test -> allUrl();# $test -> data();

http://chatgpt.dhexx.cn/article/220UCtSD.shtml

相关文章

PHP分页技术详解

直接上代码&#xff0c;注释很详细了。 <?php /** * php分页技术详解 * author jahng */header("Content-type: text/html; charsetUTF-8");echo<link rel"stylesheet" type"text/css" href"css.css" media"all" /&g…

PHP的分页处理

HTML页面&#xff1a; <div class"page"> {$data->render()|raw} </div> 控制器页面&#xff1a; $data ArticleInfo:: where(cate_id, $this->cid)->whereLike(title,%.$get.%)->paginate([ query>[cid>$this->cid], l…

php分页

这是学生信息管理每三条一页> <?phpfunction news($pageNum 1, $pageSize 3){$array array();$mysqlnew mysql();$rs "select * from user limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;$r $mysql->query($rs);while ($obj…

PHP-分页

1.6 分页 1.6.1 分析 -- 1、获取当前页码的数据 页码 SQL语句 1 select * from products limit 0,10 2 select * from products limit 10,10 3 select * from products limit 20,10 结论&#xff1a; $pageno&#xff1a;页码 $startno:起始位置 $pagesize10:页面大小…

PHP分页查询

1、创建Page.php类&#xff0c;代码如下&#xff1a; <?php /*** 分页模板类*/ class Page {private $cur_page;//当前页private $total;//总条数private $page_size 10;//每页显示的条数private $total_page;//总页数private $first_page;//首页显示名称private $pre_pa…

全功能PHP分页条

网上可以找到的ASP、PHP分页条很多。我也不能免俗&#xff0c;发表一个献献丑。唯一聊以自慰的是这个分页条能生成的显示样式还是很多的&#xff0c;相信能满足大部分人的需要。另一个特点就是使用特别简单&#xff0c;一般传递两个参数即可使用。文档里有使用样例和效果图。发…

php原生分页

自己写一个原生php分页&#xff1a; <?php $linkMySQL_connect(localhost,用户名,密码); mysql_select_db(数据库名称,$link); mysql_query(set names utf8); $resultmysql_query("select * from 表名"); $count mysql_num_rows($result); $Page_size10; …

如何用php实现分页效果

分页效果在网页中是常见的,可是怎样才能实现分页呢,今天做了两种方法来实现一下分页的效果 首先,我们需要准备在数据库里面准备一个表,并且插入数据,这些都是必需的前提工作了,不多说,如图所示(库名为jereh,表名为n_content): 步骤分析: 我们需要分页的话,需要用…

超级好用的PHP分页类

<?phpclass Page {private $total; //总记录private $pagesize; //每页显示多少条private $limit; //limitprivate $page; //当前页码private $pagenum; //总页码private $url; //地址private $bothnum; //两边保持数字分页的量//构造方法初始化pub…

PHP-分页具体实现及代码

数据分页概述 对大量数据进行分页显示是 Web 开发中最常见的情况&#xff0c;但大多刚开始接触 Web 开发的开发人员&#xff0c;对分页技术往往比较迷惘&#xff0c;本节教程以一个分页显示留言板的数据为例就来演示一下 PHP 中基本的数据分页显示原理。 本节教程需要用到的 …

计算机网络原理复习(一)

最近面试某公司的Linux C开发职位&#xff0c;面试的时候面试官提问了一些网络基础的知识&#xff0c;只是惭愧至极&#xff0c;好多知识点已经记忆模糊。周末花时间把网络原理的知识点整理了一下。 计算机网络体系结构&#xff1a; 网络体系结构&#xff1a; 按照我的理解 1…

计算机网络原理练习题及答案

计算机网络原理练习题及答案 读前必看&#xff0c;此篇为计算机网络原理复习对应的练习题。 第一部分传送门&#xff1a;待更新 文章目录 计算机网络原理练习题及答案练习1练习2练习3练习 4练习 5练习 6 练习1 某单位申请到一个B类IP地址&#xff0c;其网络标识&#xff08;N…

计算机网络原理 谢希仁(第8版)第一章习题答案

1-01 计算机网络可以向用户提供哪些服务&#xff1f; 1-02 试简述分组交换的要点。 答&#xff1a;采用了存储转发技术&#xff0c;即将报文&#xff08;要发送的整块数据&#xff09;划分为几个较小的等长数据段&#xff0c;在每个数据段前加上必要的控制信息组成的首部&#…

计算机网络原理(谢希仁第八版)第五章课后习题答案

第五章 35题&#xff0c;36题已经做了更正&#xff0c;特别感谢粉丝奈七七的答案。 1.试说明运输层在协议栈中的地位和作用&#xff0c;运输层的通信和网络层的通信有什么重要区别&#xff1f;为什么运输层是必不可少的&#xff1f; 答&#xff1a;运输层处于面向通信部分的最…

计算机网络原理学习笔记

目录 一. 计算机网络概述1.1 计算机网络基本概念1.2 计算机网络结构1.3 数据交换技术1.4 计算机网络性能1.4.1 速率与带宽1.4.2 时延1.4.3 时延带宽积1.4.4 丢包率1.4.5 吞吐量 1.5 计算机网络体系结构1.5.1 计算机网络分层体系结构1.5.2 OSI 参考模型1.5.3 OSI 参考模型有关术…

计算机网络原理(谢希仁第八版)第一章课后习题答案

第一章 1.计算机网络可以向用户提供哪些服务&#xff1f; 答&#xff1a;例如音频&#xff0c;视频&#xff0c;游戏等&#xff0c;但本质是提供连通性和共享这两个功能。 连通性&#xff1a;计算机网络使上网用户之间可以交换信息&#xff0c;好像这些用户的计算机都可以彼此…

计算机网络原理IP计算总结

前言 这几天在捡计算机网络原理&#xff0c;但是发现很多计算IP的题目都不会计算了&#xff0c;然后百度&#xff08;谷歌&#xff09;了很久都找不到比较好的文章&#xff0c;也废了我差不多3-4个小时才解出来&#xff0c;所以就写一篇文章来进行总结吧&#xff01; 开始 开…

计算机网络原理的思维导图汇总

前言 从1月23日到3月5日&#xff0c; 前两个学习阶段&#xff0c;到今天基本结束。下面是小编进行总结归纳的所有思维导图&#xff0c;请欣赏&#xff1a; 第一阶段导图 第二阶段导图 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 小结 在上周周五&#x…

【自考】-计算机网络原理

新一波的自考学习又开始了&#xff0c;今天小咸儿来给大家分享一下自己对于计算机网络原理的学习&#xff1b; 首先先献上自己的一张思维导图&#xff1a; 这张导图首先描述了小咸儿对于计算机网络原理的整体认知&#xff0c;欢迎大家能够一起交流&#xff01; 对于计算机网络原…

转载-计算机网络原理

计算机信息管理专业课程 最新自考笔记 : https://github.com/Eished/self-study-exam_notes 计算机网络 国家精品课 课程地址&#xff1a;https://www.icourse163.org/course/HIT-154005 讲师&#xff1a;李全龙、聂兰顺 课件整合补充&#xff1a;Eished 视频总时长&#xff1a…