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. FZYZOJ-1569 喝水

    P1569 -- 喝水 时间限制:2000MS      内存限制:131072KB 状态:Accepted      标签:    无   无   无 Description GH的N个妹子要喝水, ...

  2. Piggy-Bank(完全背包)

    /* http://acm.hdu.edu.cn/showproblem.php?pid=1114 完全背包问题 再判断背包能否装满 题意: 给出存空钱罐的重量以及装满时的重量 给出每种硬币的面值以及 ...

  3. CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站

    CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ...

  4. DTD与XSD的区别

    DTD=类型定义(Documnet Type Definition) XSD=XML结构定义 ( XML Schemas Definition ) DTD 就相当于 XML 中的“词汇”和“语法”,不 ...

  5. Win8 移除右键菜单中的SkyDrive Pro选项

    Step 1:进入注册表编辑器 Win + R键调出运行窗口,然后输入regedit,进入注册表编辑器. Step 2:删除下面的键值 HKEY_CLASSES_ROOT\AllFilesystemO ...

  6. HDU1097 A hard puzzle

    A hard puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. C++初始化顺序

    1. 全局和类的静态变量成员在main之前构造和初始化,静态成员不能在类的内部构造初始化 2. 类的普通成员依据在类内的定义顺序初始化,类的构造函数的初始化类表只能决定成员的构造函数,不能决定构造顺序 ...

  8. Android 连接 SQL Server (jtds方式)——上

    本文将介绍开发Android程序,连接SQL Server,通过第三方包jtds的方式. 如果你有同样的需求,请跟着做一遍,博主将以最详细的方式,进行介绍. 首先说明,Java.Android连接SQ ...

  9. Android 环境下编译FFmpeg

    Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1.    X2 ...

  10. 三星I9308(移动版)正确​Root的方法,进入正确的recovery的关键(网上很多方法是误导)

    三星I9308(移动版)正确​Root的方法,进入正确的recovery的关键(网上很多方法是误导)   1)首先在电脑上安装手机驱动:下载地址:点击这里下载  2)手机设置USB调试 方法1:设置- ...