PHP分页类代码
今天为大家献上一段代码,这是一段php分页代码:
<?php
//创建分页类
class Page {
private $_all_num; //数据总个数
private $_page_size; //每页显示几条数据
private $_page; //当前页面
private $_all_page; //总页码
private $_url; //页面地址
private $_limit; //数据库查询语句
private $_sign; //地址符号
//拦截器
public function __get($_key) {
return $this->$_key;
}
public function __construct($_all_num,$_page_size) {
$this->_all_num = $_all_num;
$this->_page_size = $_page_size;
$this->_all_page = ceil($this->_all_num / $this->_page_size);
$this->_page = $this->setPage();
$this->_url = $this->setUrl();
$this->_limit = 'LIMIT '.($this->_page * $this->_page_size - $this->_page_size).','.$this->_page_size;
}
//获取当前页码
private function setPage() {
if (!empty($_GET['page']) && $_GET['page'] > 0) {
if ($_GET['page'] <= $this->_all_page) {
return ceil($_GET['page']);
} else {
return $this->_all_page;
}
} else {
return 1;
}
}
//获取地址
private function setUrl() {
$_url = $_SERVER['REQUEST_URI'];
if (!empty($_url)) {
$_par_url = parse_url($_url);
if (isset($_par_url['query'])) {
parse_str($_par_url['query'],$_arr);
if (isset($_arr['page'])) {
unset($_arr['page']);
}
if (!empty($_arr)) {
$_http = http_build_query($_arr);
$_end_url = $_par_url['path'] . '?' . $_http;
$this->_sign = '&';
} else {
$_end_url = $_par_url['path'];
$this->_sign = '?';
}
} else {
$_end_url = $_par_url['path'];
$this->_sign = '?';
}
}
return $_end_url;
}
//显示分页
public function numPage() {
$_num = '';
//前面
for ($i=1; $i<$this->_page; $i++) {
if ($i<1) continue;
$_num .= "<a href='".$this->_url. $this->_sign ."page=".$i."'>".$i."</a>";
}
//自己
$_num .= "<a class='me' href='".$this->_url. $this->_sign ."page=".$this->_page."'>".$this->_page."</a>";
//后面
for ($i=$this->_page+1; $i<=$this->_all_page; $i++) {
if ($i>$this->_all_page) continue;
$_num .= "<a href='".$this->_url. $this->_sign ."page=".$i."'>".$i."</a>";
}
return $_num;
}
}
?>
大家可以将上面一段代码复制到文本编辑器中这样看的会舒服一点!下面讲一下具体步骤:
1、创建一个分页类:class Page {};
2、获取需要显示数据的个数,并且记录在Page类中,这里数据的个数通过数据去获取就不详细说了!然后设置每页显示数据的条数!
3、获取当前页面地址!
这段代码大概意思就是当你的地址跟着?时,那么点击分页就用&page=;当你的地址后面没有后缀或者只有?page=,那么点击分页就用?page=
4、获取当前页码
这里的页码必须是整数,所以可以用ceil这个函数,还要注意用户的恶意修改地址!
4、做分页元素,这里只是做一个简单的数字分页,更复杂用户体验更好的,大家可以自行扩展!
5、设置数据库库的查询条数,也就是LIMIT;举个例子:比如我现在有10条数据,设置每页显示5条数据,那么
当用户点击第一页时,LIMIT 0,5
当用户点击第二页时,LIMIT 5,5
6、这段代码的调用:
$_page = new Page(10,5);
$_page->page();
上面的10是总的数据个数,5是你想要每页显示数据的个数,$_page->page()就是页面的分页,直接echo出来就行啦,注意你还得将Page类中的$_limit调用出来放到数据库查询语句中,这样基本的php分页就出来啦!
此文章属于王业楼的个人博客原创,若要转载请注明出处:王业楼的个人博客 www.ly89.cn
PHP分页类代码的更多相关文章
- php分页类代码带分页样式效果(转)
php分页类代码,有漂亮的分页样式风格 时间:2016-03-16 09:16:03来源:网络 导读:不错的php分页类代码,将类文件与分页样式嵌入,实现php查询结果的精美分页,对研究php分页原理 ...
- 一个简单的php分页类代码(转载)
入门级php分页类 原文地址:http://www.xfcodes.com/php/fenye/3608.htm 时间:2015-12-16 20:52:00来源:网络 php分页类. 复制代码代码如 ...
- php分页类代码和使用
在这要说的一点就是如果你做的分页是有搜索条件的,那么就可以用下面的代码,然后调用之后在new Page()里面把连接加进去就可以了.例如: $href="http://www.***.cn/ ...
- php之分页类代码
/* 思路 1.把地址栏的URL获取 2.分析URL中的query部分--就是?后面传参数的部分 3.query部分分析成数组 4.把数组中的page单元,+1,-1,形成2个新的数组 5.再把新数组 ...
- CI框架分页类代码
model层 ; $page = $); ; }else{ $start = $page; } $data['results'] = $ ...
- 简单易用的分页类实例代码PHP
<?php /*********************************************** * @类名: page * @参数: $myde_total - 总记录数 * $m ...
- CI框架分页类
分页类1.分页类参数说明 'base_url' => 指向你的分页所在的控制器类/方法的完整的 URL, 'total_rows' => 数据的总行数, 'per_page' => ...
- php+mysql分页类的入门实例
php+mysql分页类的简单代码 时间:2016-02-25 06:16:26来源:网络 导读:php+mysql分页类的简单代码,二个php分页类代码,对商品进行分页展示,当前页面数,每个页面展示 ...
- thinkphp简洁、美观、靠谱的分页类
我们要实现如下图分页效果 这个分页类是在thinkphp框架内置的分页类的基础上修改而来:原分页类的一些设计,在实际运用中感觉不是很方便: 1.只有一页内容时不显示分页: 2.原分页类在当前页是第一页 ...
随机推荐
- Codeforces Round #562 (Div. 2) C. Increasing by Modulo
链接:https://codeforces.com/contest/1169/problem/C 题意: Toad Zitz has an array of integers, each intege ...
- HDU1409 Is It a Number
http://acm.hdu.edu.cn/showproblem.php?pid=1409 没啥好说的,至今也不知道到底错在哪里了,看了discuss才过的 #include <iostrea ...
- Net Core应用,在CentOS上运行
Net Core应用,在CentOS上运行 本文主要介绍下运用docker虚拟技术打包Asp.net core应用. Docker作为一个开源的应用容器引擎,近几年得到广泛的应用,使用Docker我们 ...
- Ubuntu里let's encrypt通配符证书的自动续期更新
环境与需求: Ubuntu云服务器上,已经做好了ssl证书的免费申请,但是证书的期限是3个月,3个月到期后必须重新申请或者更新.由于k8s集群里的服务一直在使用证书,每三个月人工更新太麻烦,所以想要配 ...
- D. Blocks 数学题
Panda has received an assignment of painting a line of blocks. Since Panda is such an intelligent bo ...
- openstack安装newton版本Nova部署(三)
一.控制节点安装部署Nova Nova 包含API(负责接收相应外部请求,支持OpenStackAPI,EC2API):cert:负责身份认证:schedule:用于云主机调度(虚拟机创建在哪台主机上 ...
- T-SQL查询处理执行顺序(一)
对于T-SQL编程,用得最广泛的,莫过于查询(Querying).要想写出高质量.高性能的查询语句,必须深入地了解逻辑查询处理. 一.逻辑查询处理的各个阶段 (5)SELECT DISTINCT TO ...
- AJPFX浅析Java内存结构
1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置2. MethodArea(方法区域):类的信息及静态变量. 对应是Permanet Generation, 通过-XX:PermSi ...
- cesium模型加载-加载fbx格式模型
整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...
- IM云通信行业步入快车道,谁将成为代表中国的全球IM“独角兽”?
2016年,Twilio的成功上市,以及抢眼的股价表现,拓宽了全球云通信行业的想象空间,行业内公司估值水平也集体上调. 在中国,IM云通信行业也从2016年开始进入了一个“黄金发展时期”,一批如融云. ...