class Pagination  独立分页类 
调用方式: 
$pagenation = new Pagination( 4, 10, 200 ); // 4(第一个参数) = currentPage, 10(第二个参数) = pageSize, 200(第三个参数) = 总数 
$pagenation->set_link( 'http://www.360hqb.com' ); 
$pagenation->show();

<?php
/**
* class Pagination
*
* 独立分页类
* 调用方式:
* $pagenation = new Pagination( 4, 10, 200 ); // 4(第一个参数) = currentPage, 10(第二个参数) = pageSize, 200(第三个参数) = 总数
* $pagenation->set_link( 'http://www.360hqb.com' );
* $pagenation->show();
*/
class Java_Pagination
{
protected $_total = 0;
protected $_total_page = 0;
protected $_page = 1;
protected $_page_size = 10;
protected $_link = '';
protected $_grep = 3; protected $_admin = false;
protected $_css_next = 'next-page';
protected $_css_prev = 'prev-page';
protected $_css_curr = 'curr-page';
protected $_css_page = 'page-nav inline-block'; public function __construct ( $page, $page_size, $total, $admin = false )
{
$this->set_current_page( $page );
$this->set_page_size( $page_size );
$this->set_total( $total ); if ( $admin )
{
$this->_admin = $admin;
}
//$this->_link = $_SERVER['REQUEST_URI'];
$this->set_link( $_SERVER['REQUEST_URI'] );
} public function set_link ( $link, $is_shop = TRUE )
{
$len = strlen( $link );
$substr = substr( $link, $len - 1 );
if ( '&' == $substr )
{
$link = substr( $link, 0, $len - 1 );
}
$pos = strpos( $link, '?' );
if ( $pos )
{
$link = substr( $link, 0, $pos );
}
if ( !empty( $_GET ) )
{
$link .= '?';
foreach ( $_GET as $k=>$v )
{
if ( 'page' == strtolower( $k ) )
{
continue;
}
$link .= $k.'='.$v.'&';
}
$len = strlen( $link );
$substr = substr( $link, $len - 1 );
if ( '&' == $substr )
{
$link = substr( $link, 0, $len - 1);
}
}
elseif ( isset( $_SERVER['QUERY_STRING'] ) AND !empty( $_SERVER['QUERY_STRING'] ) AND $is_shop )
{
$link .= '?'.$_SERVER['QUERY_STRING'];
$len = strlen( $link );
$substr = substr( $link, $len - 1 );
if ( '&' == $substr )
{
$link = substr( $link, 0, $len - 1);
}
}
$this->_link = $link;
} public function set_page_size ( $page_size )
{
if ( empty( $page_size ) )
{
$this->_page_size = 10;
}
else
{
$this->_page_size = (int) $page_size;
}
} public function set_total ( $total )
{
$page_size = empty( $this->_page_size )?10:$this->_page_size;
$this->_total = $total;
if ( 0 == ( $total % $page_size ) )
{
$this->_total_page = intval( $total / $page_size );
}
else
{
$this->_total_page = intval( $total / $page_size ) + 1;
}
if ( $this->_page > $this->_total_page )
{
$this->_page = $this->_total_page;
}
} public function set_current_page ( $page )
{
if ( empty( $page ) )
{
$this->_page = 1;
}
else
{
$this->_page = (int) $page;
}
} public function get_next_page_btn ()
{
if ( $this->_page < $this->_total_page )
{
$link = '';
if ( strpos( $this->_link, '?' ) )
{
$link = $this->_link.'&page='.( $this->_page + 1 );
}
else
{
$link = $this->_link.'?page='.( $this->_page + 1 );
}
if ( $this->_admin )
{
return '<a href="'.$link.'">下一页</a>';
}
else
{
return '<li class="'.$this->_css_next.'"><a href="'.$link.'">下一页</a></li>';
}
}
if ( $this->_admin )
return '下一页&nbsp;»';
else
return '';
} public function get_prev_page_btn ()
{
if ( $this->_page > 1 )
{
$link = '';
if ( strpos( $this->_link, '?' ) )
{
$link = $this->_link.'&page='.( $this->_page - 1 );
}
else
{
$link = $this->_link.'?page='.( $this->_page - 1 );
}
if ( $this->_admin )
{
return '<a href="'.$link.'">上一页</a>';
}
else
{
return '<li class="'.$this->_css_prev.'"><a href="'.$link.'">上一页</a></li>';
}
}
if ( $this->_admin )
return '«&nbsp;上一页';
else
return '';
} public function get_current_page ()
{
if ( $this->_admin )
return '<strong>'.$this->_page.'</strong>';
else
return '<li class="'.$this->_css_curr.'"><a class="selected" href="javascript:void(0)">'.$this->_page.'</a></li>';
} public function get_page_link ( $page )
{
$link = '';
if ( strpos( $this->_link, '?' ) )
{
$link = $this->_link.'&page='.$page;
}
else
{
$link = $this->_link.'?page='.$page;
}
if ( $this->_admin )
{
return '<a href="'.$link.'">'.$page.'</a>';
}
else
{
return '<li><a href="'.$link.'">'.$page.'</a></li>';
}
} public function get_prev_pages ()
{
$pages = array();
$begin = $this->_page - $this->_grep;
if ( $begin < 1 )
{
$begin = 1;
}
elseif ( $begin > 2 )
{
$pages[] = $this->get_page_link( 1 );
if ( $this->_admin )
{
$pages[] = '&nbsp;...&nbsp;';
}
else
{
$pages[] = '<li>...</li>';
}
}
elseif ( $begin == 2 )
{
$pages[] = $this->get_page_link( 1 );
}
for ( $i = $begin; $i < $this->_page; $i++ )
{
$pages[] = $this->get_page_link( $i );
}
return $pages;
} public function get_next_pages ()
{
$pages = array();
$begin = $this->_page + 1;
if ( $begin < $this->_total_page )
{
$end = $begin + $this->_grep;
if ( $end > $this->_total_page )
{
$end = $this->_total_page;
}
for ( $i = $begin; $i < $end; $i++ )
{
$pages[] = $this->get_page_link( $i );
}
if ( $i < $this->_total_page )
{
if ( $this->_admin )
{
$pages[] = '&nbsp;...&nbsp;';
}
else
{
$pages[] = '<li>...</li>';
}
$pages[] = $this->get_page_link( $this->_total_page );
}
else
{
$pages[] = $this->get_page_link( $this->_total_page );
}
}
elseif ( $begin == $this->_total_page )
{
$pages[] = $this->get_page_link( $this->_total_page );
}
return $pages;
} public function show ()
{
if ( $this->_total_page <= 1 )
{
return;
}
if ( $this->_admin )
{
echo '<p class="pagination">';
echo '<span>共有'.$this->_total.'条记录</span>';
}
else
{
echo '<ul class="'.$this->_css_page.'">';
}
echo $this->get_prev_page_btn();
$prev_pages = $this->get_prev_pages ();
if ( !empty( $prev_pages ) )
{
foreach ( $prev_pages as $page )
{
echo $page;
}
}
echo $this->get_current_page();
$next_pages = $this->get_next_pages ();
if ( !empty( $next_pages ) )
{
foreach ( $next_pages as $page )
{
echo $page;
}
}
echo $this->get_next_page_btn();
if ( $this->_admin )
{
echo '</p>';
}
else
{
echo '</ul>';
}
}
}

封装好的PHP分页类,简单好用--在开源看到的,取回来自己用的更多相关文章

  1. 好用的ASP.NET 分页类 简单好用 支持 AJAX 自定义文字

    在做网站没用 JS UI控件时 很实用 用法: var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ...

  2. php分页类代码带分页样式效果(转)

    php分页类代码,有漂亮的分页样式风格 时间:2016-03-16 09:16:03来源:网络 导读:不错的php分页类代码,将类文件与分页样式嵌入,实现php查询结果的精美分页,对研究php分页原理 ...

  3. 自定义MVC框架之工具类-分页类的封装

    以前写过一个MVC框架,封装的有点low,经过一段时间的沉淀,打算重新改造下,之前这篇文章封装过一个验证码类. 这次重新改造MVC有几个很大的收获 >全部代码都是用Ubuntu+Vim编写,以前 ...

  4. Django分页类的封装

    Django分页类的封装 Django ORM  封装 之前有提到(Django分页的实现)会多次用到分页,将分页功能封装起来能极大提高效率. 其实不是很难,就是将之前实现的代码全都放到类中,将需要用 ...

  5. 简单实用的原生PHP分页类

    一款简单实用的原生PHP分页类,分页按钮样式简洁美观,页码多的时候显示“...”,也是挺多网站用的效果 核心分页代码 include_once("config.php"); req ...

  6. php 简单分页类

    /**  file: page.class.php   完美分页类 Page  */ class Page {  private $total;          //数据表中总记录数  privat ...

  7. PHP简单漂亮的分页类

    本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap. <?php /* * ********************************************* * @类名 ...

  8. php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;

    Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...

  9. 一个简单的php分页类代码(转载)

    入门级php分页类 原文地址:http://www.xfcodes.com/php/fenye/3608.htm 时间:2015-12-16 20:52:00来源:网络 php分页类. 复制代码代码如 ...

随机推荐

  1. 原生JavaScript拖动div兼容多种浏览器

    说句题外话,虽然博客园嵌入式氛围不行,Web前端氛围还是很好的.我又从 chinaunix 回来了. <html> <head> <script type="t ...

  2. 【转】C/C++ 内存对齐

    [转自]http://wenku.baidu.com/view/8eaaa26925c52cc58bd6bed2.htmlC/C++内存对齐 一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都 ...

  3. 【模拟】Class 解题报告

    [问题描述] 信息班这期的课将要结束了,老师要从现在班上的同学中选出比较优秀的同学进入下一期的学习.而录取标准则是将平时作业和考试一起考虑,综合成绩排在前面的则录取.经过一番思考,老师作了以下的筛选计 ...

  4. zoj 3365 灵活数字规律

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3365 #include <cstdio> #incl ...

  5. 高频交易:Solarflare组建超低延迟网络

    10Gb以太网适配器制.网卡造商Solarflare目前正在将自己的网卡系列产品转变为服务器产品.其产品在金融领域有着广泛的应用. Solarflare首先将现场可编程门阵列(FPGA)放入网络适配器 ...

  6. Android ImageView 图片设置为透明

    方法一: 在xml中,设置如下 <ImageView            android:id="@+id/xx_id"            android:layout ...

  7. 第一篇:数据库需求与ER建模

    前言 在数据库建设过程中,哪一步最重要?绝大多数资料会告诉你,是需求分析阶段.这一步的好坏甚至直接决定数据库项目的成败. 需求分析阶段,也被称为ER建模(entity-relationship mod ...

  8. JDK5-静态导入

    import static 1. 导入一个类内所有静态成员 import static java.lang.Math.*; public class StaticImport { public sta ...

  9. 2015 UESTC Training for Search Algorithm & String - J - 全都是秋实大哥 【KMP】

    给出一个字符串,求每个前缀的最小循环节长度,并输出整个字符串的最小循环节.字符串长度为3*10^6 找循环节这种问题还是要用KMP对于长度为i的字符串 i%(i-f[i])==0 此时,它的最小循环节 ...

  10. Python Socket单线程+阻塞模式

    Python之旅]第五篇(二):Python Socket单线程+阻塞模式 python Socket单线程 Socket阻塞模式 串行发送 摘要:  前面第五篇(一)中的一个Socket例子其实就是 ...