分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

php 数据分页类,可自定义多个分页样式

发布时间:2023-09-06 01:13责任编辑:彭小芳关键词:暂无标签

调用分页类的方法:

 // 测试分页 ???public function pageTestAction() ???{ ???????Load::load_class(‘getPage‘,DIR_BF_ROOT.‘classes‘,0); ???????$list = M(‘category‘)->field(array(‘id‘,‘catname‘,‘model‘))->select(); ???????$total = ?M(‘category‘)->findCount(); //总条数 ???????$biao = isset($_GET[‘page‘]) ? $_GET[‘page‘] : 1; ???????$pagesize = 10; ???????$page = ($biao -1)* $pagesize; ???????$href = "http://ceea.com/user/User/pageTest/?page="; ???????$p = new Page($total, $pagesize, $biao, $pagesize, $href); ???????echo $p->showPages(3); ???}

分页类的源代码:

<?php/** * 分页类 * * 调用方式: * $p=new Page(总页数,显示页数,当前页码,每页显示条数,[链接]); * print_r($p->getPages()); //生成一个页码数组(键为页码,值为链接) * echo $p->showPages(1); ???//生成一个页码样式(可添加自定义样式) * * @author: 草根级 * @Last Modified time: 2017-01-09 13:31 *//*思路:给我一个 总页数,需要显示的页数,当前页,每页显示的条数,连接写一个方法 生成一个一维数组,键为页码 值为连接写一个方法 返回一个生成好样式的页码(并且可以根据自己需要添加样式)默认样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页]*/class Page{ ???protected $count; ??????//总条数 ???protected $showPages; ??//需要显示的页数 ???protected $countPages; ?//总页数 ???protected $currPage; ???//当前页 ???protected $subPages; ???//每页显示条数 ???protected $href; ???????//连接 ???protected $page_arr=array(); ???//保存生成的页码 键页码 值为连接 ???/** ????* __construct ?构造函数(获取分页所需参数) ????* @param int $count ????总条数 ????* @param int $showPages 显示页数 ????* @param int $currPage ?当前页数 ????* @param int $subPages ?每页显示数量 ????* @param string $href ??连接(不设置则获取当前URL) ????*/ ???public function __construct($count,$showPages,$currPage,$subPages,$href=‘‘){ ???????$this->count=$count; ???????$this->showPages=$showPages; ???????$this->currPage=$currPage; ???????$this->subPages=$subPages; ???????//如果链接没有设置则获取当前连接 ???????$this->href=$href; ???????$this->construct_Pages(); ???} ???/** ????* getPages 返回页码数组 ????* @return array 一维数组 键为页码 值为链接 ????*/ ???public function getPages(){ ???????return $this->page_arr; ???} ???/** ????* showPages 返回生成好的页码 ????* @param ?int $style 样式 ????* @return string ????生成好的页码 ????*/ ???public function showPages($style=1){ ???????$func=‘pageStyle‘.$style; ???????return $this->$func(); ???} ???/** ????* pageStyle1 分页样式(可参照这个添加自定义样式 例如pageStyle2()) ????* 样式 共45条记录,每页显示10条,当前第1/4页 [首页] [上页] [1] [2] [3] .. [下页] [尾页] ????* @return string ????*/ ???protected function pageStyle1(){ ???????/* 构造普通模式的分页 ???????共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [1] [2] [3] .. [下页] [尾页] ???????*/ ???????$pageStr=‘共‘.$this->count.‘条记录,每页显示‘.$this->subPages.‘条‘; ???????$pageStr.=‘当前第‘.$this->currPage.‘/‘.$this->countPages.‘页 ‘; ???????$_GET[‘page‘] = 1; ???????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">首页</a>] </span>‘; ???????//如果当前页不是第一页就显示上页 ???????if($this->currPage>1){ ???????????$_GET[‘page‘] = $this->currPage-1; ???????????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">上页</a>] </span>‘; ???????} ???????foreach ($this->page_arr as $k => $v) { ???????????$_GET[‘page‘] = $k; ???????????$pageStr.=‘<span>[<a href="‘.$v.‘">‘.$k.‘</a>] </span>‘; ???????} ???????//如果当前页小于总页数就显示下一页 ???????if($this->currPage<$this->countPages){ ???????????$_GET[‘page‘] = $this->currPage+1; ???????????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">下页</a>] </span>‘; ???????} ???????$_GET[‘page‘] = $this->countPages; ???????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">尾页</a>] </span>‘; ???????return $pageStr; ???} ???protected function pageStyle2(){ ???????/* 构造普通模式的分页 ????????[首页] [上页] [1] [2] [3] [下页] [尾页] ???????*/ ???????$pageStr = ""; ???????$_GET[‘page‘] = 1; ???????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">首页</a>] </span>‘; ???????//如果当前页不是第一页就显示上页 ???????if($this->currPage>1){ ???????????$_GET[‘page‘] = $this->currPage-1; ???????????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">上页</a>] </span>‘; ???????} ???????foreach ($this->page_arr as $k => $v) { ???????????$_GET[‘page‘] = $k; ???????????$pageStr.=‘<span>[<a href="‘.$v.‘">‘.$k.‘</a>] </span>‘; ???????} ???????//如果当前页小于总页数就显示下一页 ???????if($this->currPage<$this->countPages){ ???????????$_GET[‘page‘] = $this->currPage+1; ???????????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">下页</a>] </span>‘; ???????} ???????$_GET[‘page‘] = $this->countPages; ???????$pageStr.=‘<span>[<a href="‘.$this->href.‘‘.$_GET[‘page‘].‘">尾页</a>] </span>‘; ???????return $pageStr; ???} ???protected function pageStyle3(){ ???????/* 构造普通模式的分页 ????????[1] [2] [3] ???????*/ ???????$pageStr = ""; ???????$_GET[‘page‘] = 1; ???????//如果当前页不是第一页就显示上页 ???????foreach ($this->page_arr as $k => $v) { ???????????$_GET[‘page‘] = $k; ???????????$pageStr.=‘<span>[<a href="‘.$v.‘">‘.$k.‘</a>] </span>‘; ???????} ???????//如果当前页小于总页数就显示下一页 ???????return $pageStr; ???} ???/** ????* construct_Pages 生成页码数组 ????* 键为页码,值为链接 ????* $this->page_arr=Array( ????* ?????????????????[1] => index.php?page=1 ????* ?????????????????[2] => index.php?page=2 ????* ?????????????????[3] => index.php?page=3 ????* ?????????????????......) ????*/ ???protected function construct_Pages(){ ???????//计算总页数 ???????$this->countPages=ceil($this->count/$this->subPages); ???????//根据当前页计算前后页数 ???????$leftPage_num=floor($this->showPages/2); ???????$rightPage_num=$this->showPages-$leftPage_num; ???????//左边显示数为当前页减左边该显示的数 例如总显示7页 当前页是5 ?左边最小为5-3 ?右边为5+3 ???????$left=$this->currPage-$leftPage_num; ???????$left=max($left,1); //左边最小不能小于1 ???????$right=$left+$this->showPages-1; //左边加显示页数减1就是右边显示数 ???????$right=min($right,$this->countPages); ?//右边最大不能大于总页数 ???????$left=max($right-$this->showPages+1,1); //确定右边再计算左边,必须二次计算 ???????for ($i=$left; $i <= $right; $i++) { ???????????$_GET[‘page‘] = $i; ???????????$this->page_arr[$i]=$this->href.‘‘.$_GET[‘page‘]; ???????} ???}}

php 数据分页类,可自定义多个分页样式

原文地址:http://www.cnblogs.com/photo520/p/7592071.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved