1.分页源码

 <?php
class PageView{
/**页码**/
public $pageNo = 1;
/**页大小**/
public $pageSize = 20;
/**共多少页**/
public $pageCount = 0;
/**总记录数**/
public $totalNum = 0;
/**偏移量,当前页起始行**/
public $offSet = 0;
/**每页数据**/
public $pageData = array(); /**是否有上一页**/
public $hasPrePage = true;
/**是否有下一页**/
public $hasNextPage = true; public $pageNoList = array(); public $jsFunction ='jsFunction';
/**
*
* @param unknown_type $count 总行数
* @param unknown_type $size 分页大小
* @param unknown_type $string
*/
public function __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$jsFunction='jsFunction'){ $this->totalNum = $count;//总记录数
$this->pageSize = $size;//每页大小
$this->pageNo = $pageNo;
//计算总页数
$this->pageCount = ceil($this->totalNum/$this->pageSize);
$this->pageCount = ($this->pageCount<=0)?1:$this->pageCount;
//检查pageNo
$this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo;
$this->pageNo = $this->pageNo > $this->pageCount? $this->pageCount : $this->pageNo; //计算偏移
$this->offset = ( $this->pageNo - 1 ) * $this->pageSize;
//计算是否有上一页下一页
$this->hasPrePage = $this->pageNo == 1 ?false:true; $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true; $this->pageData = $pageData;
$this->jsFunction = $jsFunction; }
/**
* 分页算法
* @return
*/
private function generatePageList(){
$pageList = array();
if($this->pageCount <= 9){
for($i=0;$i<$this->pageCount;$i++){
array_push($pageList,$i+1);
}
}else{
if($this->pageNo <= 4){
for($i=0;$i<5;$i++){
array_push($pageList,$i+1);
}
array_push($pageList,-1);
array_push($pageList,$this->pageCount); }else if($this->pageNo > $this->pageCount - 4){
array_push($pageList,1); array_push($pageList,-1);
for($i=5;$i>0;$i--){
array_push($pageList,$this->pageCount - $i+1);
}
}else if($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4){
array_push($pageList,1);
array_push($pageList,-1); array_push($pageList,$this->pageNo -2);
array_push($pageList,$this->pageNo -1);
array_push($pageList,$this->pageNo);
array_push($pageList,$this->pageNo + 1);
array_push($pageList,$this->pageNo + 2); array_push($pageList,-1);
array_push($pageList,$this->pageCount); }
}
return $pageList;
} /***
* 创建分页控件
* @param
* @return String
*/
public function echoPageAsDiv(){
$pageList = $this->generatePageList(); $pageString ="<div class='pagination'><div class='page-bottom'>"; if(!empty($pageList)){
if($this->pageCount >1){
if($this->hasPrePage){
$pageString = $pageString ."<a class='page-next' href=\"javascript:" .$this->jsFunction . "(" . ($this->pageNo-1) . ")\">上一页</a>";
}
foreach ($pageList as $k=>$p){
if($this->pageNo == $p){
$pageString = $pageString ."<span class='page-cur'>" . $this->pageNo . "</span>";
continue;
}
if($p == -1){
$pageString = $pageString ."<span class='page-break'>...</span>";
continue;
}
$pageString = $pageString ."<a href=\"javascript:" .$this->jsFunction . "(" . $p . ")\">" . $p . "</a>";
} if($this->hasNextPage){
$pageString = $pageString ."<a class='page-next' href=\"javascript:" .$this->jsFunction . "(" . ($this->pageNo+1) . ")\">下一页</a>";
} }
}
$pageString = $pageString .("</div></div>");
return $pageString;
}
} ?>

2.php调用

    $pageNo = $_GET['pageNo'];
if(empty($pageNo)){
$pageNo = 1;
}
//分页数据
$pageData = News::getNewsPage($pageNo,$pageSize);
//取得总行数
$count = News::getNewsCount();
//创建分页器
$p = new PageView($count['0']['TOTAL'],$pageSize,$pageNo,$pageData);
     //生成页码
$pageViewString = $p->echoPageAsDiv();

3.效果图:

php一个不错的分页的更多相关文章

  1. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  2. 一个不错的loading效果--IT蓝豹

    一个不错的loading效果 介绍:一个不错的loading加载效果,弹性收缩,效果不错,学习android动画的朋友可以下载来研究研究本例子其实由SeekBar实现,由MetaballView,Me ...

  3. datetimepicker一个不错的日历android特效

    datetimepicker一个不错的日历效,选中和选择日历效果都很不错, 实用的时候直接可以把datetimepicker-library这个引入到项目,调用的地方在实现 TimePickerDia ...

  4. 一个不错的shell 脚本教程 入门级

    一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂     建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行s ...

  5. 【转】一个不错的eclipse反编译插件

    [转]一个不错的eclipse反编译插件 在CSDN论坛上看到的一个不错的eclipse反编译插件,感觉看起来不错的样子,因而记下,原网址是:http://topic.csdn.net/u/20121 ...

  6. 一个不错的图片滑动展示插件 anythingslider

    一个不错的图片http://css-tricks.com/anythingslider-jquery-plugin/ DEMO演示: http://css-tricks.github.io/Anyth ...

  7. linux中内核的一个不错的参数somaxconn

    导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client ...

  8. 一个不错的PPT,扁平化设计,开放资源,要的进来

    开了那么多的博客,没做啥资源贡献,今天共享一个不错的PPT模板.例如以下图所看到的,须要的话留下邮箱 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFp ...

  9. 分享一个通用的分页SQL

    又很久没写博客,今天记录一个SQLserver通用分页存储过程(适用于SqlServer2000及以上版本) 1.支持连表 2.支持条件查询 USE [MYDB] GO /****** Object: ...

随机推荐

  1. Step-By-Step Installation of RAC with RAW Datafiles on Windows 2000

     Step-By-Step Installation of RAC with RAW Datafiles on Windows 2000 Purpose This document will pr ...

  2. Power management in semiconductor memory system

    A method for operating a memory module device. The method can include transferring a chip select, co ...

  3. Linux下如何生成core dump 文件(解决segment fault段错误的问题)

    Linux下的C程序常常会因为内存访问等原因造成segment fault(段错误),如果此时core dump 的功能是打开的,在运行我们的可执行程序时就会生成一个名为core的文件,然后我们就可以 ...

  4. python 和为S的两个数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 运用到的知识; 1.判断是否是统一类型: if not isinsta ...

  5. delphi xe 之路(14)使用FireMonkeyStyle(一共30篇)

    FireMonkey使用Style来控制控件的显示方式. 每个控件都有一个StyleLookup属性,FireMonkey就是通过控件的这个属性来在当前窗体的StyleBook控件中查找匹配的Styl ...

  6. 《TIME》时代周刊阅读

    0. 常识 tribunal 是解决民事诉讼和民事纠纷的地方,以调解为主,使用主席制.主席是受过司法培训,具有一定法律基础的,但不能像法官一样直接给你判决,也不能强制执行. Court 一般针对严重案 ...

  7. 简明Python3教程 15.异常

    简介 当程序发生意外情况时则产生异常. 例如你需要读一个文件而这个文件并不存在会咋样?又或者是程序运行时你把它误删除了呢? 上述情形通过异常进行处理. 类似的,如果你的程序存在一些非法语句会发生什么呢 ...

  8. python实现身份证校验位计算

    身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 ...

  9. Oltu在Jersey框架上实现oauth2.0授权模块

    oltu是一个开源的oauth2.0协议的实现,本人在此开源项目的基础上进行修改,实现一个自定义的oauth2.0模块. 关于oltu的使用大家可以看这里:http://oltu.apache.org ...

  10. WPF Clip实现百叶窗

    原文:WPF Clip实现百叶窗 效果图; 后台代码: public MainWindow()         {             InitializeComponent();         ...