简单易用的分页类实例代码PHP
<?php
/***********************************************
* @类名: page
* @参数: $myde_total - 总记录数
* $myde_size - 一页显示的记录数
* $myde_page - 当前页
* $myde_url - 获取当前的url
* @功能: 分页实现
* @作者: 宋海阁
*/
class page {
private $myde_total; //总记录数
private $myde_size; //一页显示的记录数
private $myde_page; //当前页
private $myde_page_count; //总页数
private $myde_i; //起头页数
private $myde_en; //结尾页数
private $myde_url; //获取当前的url
/*
* $show_pages
* 页面显示的格式,显示链接的页数为2*$show_pages+1。
* 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
*/
private $show_pages; public function __construct($myde_total=1,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
$this->myde_total = $this->numeric($myde_total);
$this->myde_size = $this->numeric($myde_size);
$this->myde_page = $this->numeric($myde_page);
$this->myde_page_count = ceil($this->myde_total/$this->myde_size);
$this->myde_url = $myde_url;
if($this->myde_total<0) $this->myde_total=0;
if($this->myde_page<1) $this->myde_page=1;
if($this->myde_page_count<1) $this->myde_page_count=1;
if($this->myde_page>$this->myde_page_count) $this->myde_page=$this->myde_page_count;
$this->limit = ($this->myde_page-1)*$this->myde_size;
$this->myde_i=$this->myde_page-$show_pages;
$this->myde_en=$this->myde_page+$show_pages;
if($this->myde_i<1){
$this->myde_en=$this->myde_en+(1-$this->myde_i);
$this->myde_i=1;
}
if($this->myde_en>$this->myde_page_count){
$this->myde_i = $this->myde_i-($this->myde_en-$this->myde_page_count);
$this->myde_en=$this->myde_page_count;
}
if($this->myde_i<1)$this->myde_i=1;
}
//检测是否为数字
private function numeric($num){
if(strlen($num)){
if(!preg_match("/^[0-9]+$/",$num)){
$num=1;
}else{
$num = substr($num,0,11);
}
}else{
$num=1;
}
return $num;
}
//地址替换
private function page_replace($page){
return str_replace("{page}",$page,$this->myde_url);
}
//首页
private function myde_home(){
if($this->myde_page!=1){
return '<a href="'.$this->page_replace(1).'" class="page-numbers" title="首页">首页</a>';
}else{
return "<p>首页</p>";
}
}
//上一页
private function myde_prev(){
if($this->myde_page!=1){
return '<span class="page-numbers prev inactive"><a href="'.$this->page_replace($this->myde_page-1).'" title="上一页">上一页</a></span>';
}else{
return '<span class="page-numbers prev inactive">上一页</span>';
}
}
//下一页
private function myde_next(){
if($this->myde_page!=$this->myde_page_count){
return '<a class="page-numbers next" href="'.$this->page_replace($this->myde_page+1).'" title="下一页">下一页</a>';
}else{
return'<p class="page-numbers next">下一页</p>';
}
}
//尾页
private function myde_last(){
if($this->myde_page!=$this->myde_page_count){
return '<a href="'.$this->page_replace($this->myde_page_count).'" class="page-numbers" title="尾页">尾页</a>';
}else{
return '<p>尾页</p>';
}
}
//输出
public function myde_write($id='page'){
$str ='<div id="'.$id.'">';
$str.=$this->myde_home();
$str.=$this->myde_prev();
if($this->myde_i>1){
$str.='<p class="page-numbers">...</p>';
}
for($i=$this->myde_i;$i<=$this->myde_en;$i++){
if($i==$this->myde_page){
$str.='<a href="'.$this->page_replace($i).'" class="page-numbers current" title="第'.$i.'页" class="cur">'.$i.'</a>';
}else{
$str.='<a href="'.$this->page_replace($i).'" class="page-numbers" title="第'.$i.'页">'.$i.'</a>';
}
}
if( $this->myde_en<$this->myde_page_count ){
$str.='<p class="page-numbers">...</p>';
}
$str.=$this->myde_next();
$str.=$this->myde_last();
$str.='<p class="pageRemark">共<b>'.$this->myde_page_count.
'</b>页<b>'.$this->myde_total.'</b>条数据</p>';
$str.='</div>';
return $str;
}
}
?>
./page.class.php
分页类代码,修正
以下为调用,应用代码
<?php
require_once('./page.class.php'); //分页类
$showrow = 3;//一页显示的行数
$curpage = empty($_GET['page'])?1:$_GET['page'];//当前的页,还应该处理非数字的情况
$url = "?page={page}";//分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']
//省略了链接mysql的代码,测试时自行添加
$sql = "SELECT * FROM table";
$query = mysql_query($sql);
$total = mysql_num_rows($query);//记录总条数
if(!empty($_GET['page']) && $total !=0 && $curpage > ceil($total/$showrow))
$curpage = ceil($total_rows/$showrow);//当前页数大于最后页数,取最后一页
//获取数据
$get_data = "select * from table limit ".($curpage-1)*$showrow.",$showrow;";
...
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>实例演示简易通用的PHP分页类</title>
<style type="text/css">
#page{
height:40px;
padding:20px 0px;
}
#page a{
display:block;
float:left;
margin-right:10px;
padding:2px 12px;
height:24px;
border:1px #cccccc solid;
background:#fff;
text-decoration:none;
color:#808080;
font-size:12px;
line-height:24px;
}
#page a:hover{
color:#077ee3;
border:1px #077ee3 solid;
}
#page a.cur{
border:none;
background:#077ee3;
color:#fff;
}
#page p{
float:left;
padding:2px 12px;
font-size:12px;
height:24px;
line-height:24px;
color:#bbb;
border:1px #ccc solid;
background:#fcfcfc;
margin-right:8px; }
#page p.pageRemark{
border-style:none;
background:none;
margin-right:0px;
padding:4px 0px;
color:#666;
}
#page p.pageRemark b{
color:red;
}
#page p.pageEllipsis{
border-style:none;
background:none;
padding:4px 0px;
color:#808080;
}
</style>
</head> <body>
<div class="main">
<div class="showData">
<!--显示数据区-->
</div>
<div class="showPage">
<?php
if($total>$showrow){//总记录数大于每页显示数,显示分页
$page = new page($total,$showrow,$curpage,$url,2);
echo $page->myde_write();
}
?>
</div>
</div>
</body>
</html>
修改了showrow,出现了错误,再重新修改,就又好了,不思奇解,
以前写过类,现在都不清楚类应该怎么写了。荒废时间太长了。
现在没人用分类类代码了,除非是学习用的,一般都采用,滚动条判断读取。
简单易用的分页类实例代码PHP的更多相关文章
- 分享自己用的php分页类实例源码
分享一个我自己用着的php分页类实例源码,供大家参考,具体内容如下: <?php /** file: page.class.php 完美分页类 Page */ class Page { priv ...
- php递归json类实例代码
这篇文章主要介绍了php递归json类的实现方法,可以实现对索引数组及数字数组的解析,进而实现递归数组返回json字符串的功能.具体实现代码如下: <?php /* * @ anthor:QD ...
- jQuery无刷新分页完整实例代码
在线演示地址如下: http://demo.jb51.net/js/2015/jquery-wsx-page-style-demo/ <!DOCTYPE html> <head> ...
- html便民查询各个工具类实例代码分享(支持pc和移动端)
1.手机号码查询 <iframe id="api_iframe_51240" name="api_iframe_51240" src="&quo ...
- php分页类代码带分页样式效果(转)
php分页类代码,有漂亮的分页样式风格 时间:2016-03-16 09:16:03来源:网络 导读:不错的php分页类代码,将类文件与分页样式嵌入,实现php查询结果的精美分页,对研究php分页原理 ...
- jquery ajax jsonp跨域调用实例代码
今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Lan ...
- C# Oracle数据库操作类实例详解
本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...
- 基于RxJava2+Retrofit2简单易用的网络请求实现
代码地址如下:http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封装 ...
- php分页类
1.需求 学会php分页类的使用 2.参考例子 CI的分页类 3.代码部分 <?php class pagination{ public $pagesize=20; public $pagein ...
随机推荐
- SSL延迟有多大?(转)
add by zhj: SSL层在TCP层之上,SSL握手是在TCP握手完成之后,除了这点之外,两者应该是相对独立的过程.在服务端,这两个过程有可能不在同一台主机上, 比如服务端用LVS+Nginx实 ...
- Linux命令(基础1)
一 命令的基本构成 (PS:Linux发行版本命令大概有200多个,熟练掌握个百八的就行了,其余的有个大概了解) 命令体 选项 参数(对象) ls -l /var 1.1参数:文件 文件类型: d ...
- (0.2.4)Mysql安装——yum源安装
转自:https://www.cnblogs.com/jimboi/p/6405560.html Centos6.8通过yum安装mysql5.7 1.下载好对应版本的yum源文件 2.安装用来配置m ...
- 前端 javascript 数据类型 字符串
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法. obj.charAt(n) 返回字符串中 ...
- 2.AS入门教程
AndroidStudio 本文是关于androidStudio的一些基础知识 介绍 Google官方的Android集成开发环境(IDE = Integrated Development Envir ...
- (转)Linux下配置tomcat+apr+native应对高并发
摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服 ...
- lamp环境的搭建和安装
最近,部门有些系统需要迁移到新的机器上,因此需要在新的机器上安装lamp和lnmp的环境,因此在这里总结一下: 一. 安装lamp环境的步骤: (1).因为是新的机器,因此需要安装gcc的各种环境: ...
- 如何看MFC程序
一直以来 我都一个疑惑 如果看懂别人的MFC 程序. 今日忽然略有小悟. Q:MFC是啥? A:MFC是类库.. ************* Q :MFC 啥玩意类库? A;MFC 是封装API的类 ...
- [转]DNS服务器原理详解与Centos6.x下搭建DNS服务器
转自:http://blog.it985.com/8958.html DNS 数据库的记录:正解,反解, Zone 的意义 通过DNS解析过程详解这篇文章,我们知道了要想访问www.zmit.cn,最 ...
- 本地多张图片采用jmeter上传到ftp服务器的方法和获取服务器日志中某些关键字的基本方法
测试需求: 本地图片上传到ftp服务器里和另外两台不同算法比对服务器进行比对,得出漏检和误检结果:这实际属于功能测试范畴. 测试思路: 第一种方法:使用实际场景的摄像机抓拍图片上传到服务器,用录屏软件 ...