<?php/**file: page.class.php 完美分页类 Page */class Page {private $total;                          //数据表中总记录数private $listRows;                        //每页显示行数private $limit;                         //SQL语句使用limit从句,限制获取记录个数private $uri;                          //自动获取url的请求地址private $pageNum;                         //总页数private $page;                         //当前页   private $config = array('head' => "条记录", 'prev' => "上一页", 'next' => "下一页", 'first'=> "首页", 'last' => "末页");                    //在分页信息中显示内容,可以自己通过set()方法设置private $listNum = 10;                  //默认分页列表显示的个数/**构造方法,可以设置分页类的属性@param   int $total      计算分页的总记录数@param    int $listRows   可选的,设置每页需要显示的记录数,默认为25条@param    mixed   $query  可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式@param   bool    $ord    可选的,默认值为true, 页面从第一页开始显示,false则为最后一页*/public function __construct($total, $listRows=25, $query="", $ord=true){$this->total = $total;$this->listRows = $listRows;$this->uri = $this->getUri($query);$this->pageNum = ceil($this->total / $this->listRows);/*以下判断用来设置当前面*/if(!empty($_GET["page"])) {$page = $_GET["page"];}else{if($ord)$page = 1;else$page = $this->pageNum;}if($total > 0) {if(preg_match('/\D/', $page) ){$this->page = 1;}else{$this->page = $page;}}else{$this->page = 0;}$this->limit = "LIMIT ".$this->setLimit();}/**用于设置显示分页的信息,可以进行连贯操作@param  string  $param  是成员属性数组config的下标@param string  $value  用于设置config下标对应的元素值@return  object          返回本对象自己$this, 用于连惯操作*/function set($param, $value){if(array_key_exists($param, $this->config)){$this->config[$param] = $value;}return $this;}/* 不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值 */function __get($args){if($args == "limit" || $args == "page")return $this->$args;elsereturn null;}/**按指定的格式输出分页@param   int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构@return string  分页信息内容*/function fpage(){$arr = func_get_args();$html[0] = "<span class='p1'> 共<b> {$this->total} </b>{$this->config["head"]} </span>";$html[1] = " 本页 <b>".$this->disnum()."</b> 条 ";$html[2] = " 本页从 <b>{$this->start()}-{$this->end()}</b> 条 ";$html[3] = " <b>{$this->page}/{$this->pageNum}</b>页 ";$html[4] = $this->firstprev();$html[5] = $this->pageList();$html[6] = $this->nextlast();$html[7] = $this->goPage();$fpage = '<div style="font:12px \'\5B8B\4F53\',san-serif;">';if(count($arr) < 1)$arr = array(0, 1,2,3,4,5,6,7);for($i = 0; $i < count($arr); $i++)$fpage .= $html[$arr[$i]];$fpage .= '</div>';return $fpage;}/* 在对象内部使用的私有方法,*/private function setLimit(){if($this->page > 0)return ($this->page-1)*$this->listRows.", {$this->listRows}";elsereturn 0;}/* 在对象内部使用的私有方法,用于自动获取访问的当前URL */private function getUri($query){    $request_uri = $_SERVER["REQUEST_URI"];  $url = strstr($request_uri,'?') ? $request_uri :  $request_uri.'?';if(is_array($query))$url .= http_build_query($query);else if($query != "")$url .= "&".trim($query, "?&");$arr = parse_url($url);if(isset($arr["query"])){parse_str($arr["query"], $arrs);unset($arrs["page"]);$url = $arr["path"].'?'.http_build_query($arrs);}if(strstr($url, '?')) {if(substr($url, -1)!='?')$url = $url.'&';}else{$url = $url.'?';}return $url;}/* 在对象内部使用的私有方法,用于获取当前页开始的记录数 */private function start(){if($this->total == 0)return 0;elsereturn ($this->page-1) * $this->listRows+1;}/* 在对象内部使用的私有方法,用于获取当前页结束的记录数 */private function end(){return min($this->page * $this->listRows, $this->total);}/* 在对象内部使用的私有方法,用于获取上一页和首页的操作信息 */private function firstprev(){if($this->page > 1) {$str = " <a href='{$this->uri}page=1'>{$this->config["first"]}</a> ";$str .= "<a href='{$this->uri}page=".($this->page-1)."'>{$this->config["prev"]}</a> ";        return $str;}}/* 在对象内部使用的私有方法,用于获取页数列表信息 */private function pageList(){$linkPage = " <b>";$inum = floor($this->listNum/2);/*当前页前面的列表 */for($i = $inum; $i >= 1; $i--){$page = $this->page-$i; if($page >= 1)$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";}/*当前页的信息 */if($this->pageNum > 1)$linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white'>{$this->page}</span> ";/*当前页后面的列表 */for($i=1; $i <= $inum; $i++){$page = $this->page+$i;if($page <= $this->pageNum)$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";elsebreak;}$linkPage .= '</b>';return $linkPage;}/* 在对象内部使用的私有方法,获取下一页和尾页的操作信息 */private function nextlast(){if($this->page != $this->pageNum) {$str = " <a href='{$this->uri}page=".($this->page+1)."'>{$this->config["next"]}</a> ";$str .= " <a href='{$this->uri}page=".($this->pageNum)."'>{$this->config["last"]}</a> ";return $str;}}/* 在对象内部使用的私有方法,用于显示和处理表单跳转页面 */private function goPage(){if($this->pageNum > 1) {return ' <input style="width:20px;height:17px !important;height:18px;border:1px solid #CCCCCC;" type="text" οnkeydοwn="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" value="'.$this->page.'"><input style="cursor:pointer;width:25px;height:18px;border:1px solid #CCCCCC;" type="button" value="GO" οnclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'"> ';}}/* 在对象内部使用的私有方法,用于获取本页显示的记录条数 */private function disnum(){if($this->total > 0){return $this->end()-$this->start()+1;}else{return 0;}}}

  

转载于:https://www.cnblogs.com/1116zsc/p/5484688.html

php分页查询·······类相关推荐

  1. mybatis实现分页查询-自己封装分页方法

    大致结构如下: 一.定义返回数据结构 创建返回数据结构主要是为了统一方便,和分页查询的关系并不大,也可以忽略这一步. package boc.ljh.config;import io.swagger. ...

  2. Mybatis-plus之RowBounds实现分页查询

    物理分页和逻辑分页 物理分页:直接从数据库中拿出我们需要的数据,例如在Mysql中使用limit. 逻辑分页:从数据库中拿出所有符合要求的数据,然后再从这些数据中拿到我们需要的分页数据. 优缺点 物理 ...

  3. 后端分页查询(模糊查询)

    如下图: 通过姓名.地址查询 新建一个page类 @Data public class MyPage implements Serializable {private Integer pageNo; ...

  4. mysql java 分页实体类_Java GUI+mysql+分页查询

    1.要求 : 创建一个学生信息管理数据库 2.实现分页查询 代码如下: a)学生实体类: /***@author: Annie * @date:2016年6月23日 * @description:学生 ...

  5. .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑

    在使用SqlBulkCopy类操作DataTable批量插入数据,这种操作插入数据的效率很高,就会导致每一条数据在保存的时间基本一样,在我们分页查询添加的数据是,使用数据的添加时间来排序就会出现每页的 ...

  6. java 瑞吉外卖day4及补全功能 文件上传下载 菜品分页查询 Dto类 菜品状态修改 菜品停售以及菜品删除

    文件上传下载 文件下载介绍 文件上传代码实现 服务端上传: @RestController @RequestMapping("/common") @Slf4j public cla ...

  7. c oracle 分页工具类,Util工具类 跨Oracle、MySQL通用分页查询

    /**** 跨Oracle.MySQL通用分页查询*/public classPagingUtil { public static finalString MYSQL= "MYSQL&quo ...

  8. [JAVA EE] JPA 查询用法:自定义查询,分页查询

    项目已上传:https://codechina.csdn.net/qq_36286039/javaee 自定义查询 问题:内置的crud功能不满足需求时如何添加自定义查询? 几种自定义查询方法 方法命 ...

  9. Mybatis + SpringMVC + Maven实现分页查询

    使用Mybatis + Maven + SpringMVC 运行时,突然被需要分页查询的功能给难住了 这里推荐采用的插件是PageHelper这个插件,使用起来十分方便.该插件支持以下数据库: Ora ...

  10. mysql分页 redis_分页查询和redis

    问题 我在做论坛的是时候遇到了如下的问题.论坛里可以有很多的主题topic,每个topic对应到很多回复reply.现在要查询某个topic下按照replyTime升序排列的第pageNo页的repl ...

最新文章

  1. html保存blob,HTML文本图像并保存为Blob到数据库
  2. WPF学习笔记(4):获取DataGridTemplateColumn模板定义的内容控件(转)
  3. python输出日期的模版_python按日期区间生成markdown日记模板
  4. linux下gzip
  5. 如何理解RESTful的幂等性
  6. odoo tree视图过滤数据_数据存储结构 LSM Tree PK B TREE (从底层了解数据库设计)...
  7. 并发说明:如何构建多线程iOS应用
  8. 机器人布罩_机器人防护罩的主要作用是什么?
  9. 2021年北京大学软件与微电子学院考研信息
  10. 赛默飞世尔Thermo Fisher仪器电路板维修故障概述
  11. 电路设计实例:232 DB9接口 引脚定义
  12. 物联网“智能水表”产品简要分析——从人民日报官微推送的NB-IoT应用谈起
  13. QT使用WinApi 报错 LNK2019 无法解析外部符号
  14. Excel冻结首行/首列
  15. 什么软件测试卡路里,热量表(计算热量的仪表)_百度百科
  16. abp+dapper+mysql_abp集成abp.Dapper
  17. 马鞍线 matlab,使用matlab编程,怎样画出心形线和马鞍面?
  18. java大文件加密速度_java版AES文件加密速度问题
  19. 09高温假旅行——青烟蓬长大
  20. fileupload文件上传用法概述

热门文章

  1. java Random类和Math.Rondom
  2. pve 虚拟环境 vi/vim不能右键粘贴设置方法
  3. 设计模式,六大设计原则,类的特性
  4. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_21-页面查询服务端开发-Dao-分页查询测试...
  5. 阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
  6. SSAS事实表和维度表数据类型必须一致
  7. 小程序 长按复制文本
  8. day22 属性 类方法 静态方法 反射 https://www.cnblogs.com/jin-xin/articles/9214247.html
  9. 设计模式(一)单例模式:1-饿汉模式(Eager)
  10. |Vijos|NOIP2015|模拟|P1975 扫雷游戏