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 $pageUrl = ''; public $parameterArray = null; /** * * @param unknown_type $count 总行数 * @param unknown_type $size 分页大小 * @param unknown_type $string */ /** * * @param $count 总行数 * @param $size 分页数【默认20】 * @param $pageNo 当前页 * @param $pageData 分页数据 * @param $pageUrl 分页链接url,1、普通url链接 2、js页面跳转 格式 javascript:funcname * @param $parameterArray 分页url参数 格式array('id'=>1,'type'=>'add') */ public function __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$pageUrl='',$parameterArray=null){ $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->pageUrl = $pageUrl; $this->parameterArray = $parameterArray; } /** * 分页算法 * @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 = $this->spellUrl($pageString,$this->pageNo-1,'上一页'); } 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>"; $pageString = $this->spellUrl($pageString,$p,$p); } if($this->hasNextPage){ $pageString = $this->spellUrl($pageString,$this->pageNo+1,'下一页'); } } } $pageString = $pageString .("</div></div>"); return $pageString; } public function spellParameterUrl($parameterArray,$isJs= false){ $parameterUrl = ''; if(empty($parameterArray)){ return $parameterUrl; } foreach ($parameterArray as $key=>$value){ if($isJs){ $parameterUrl .= ",'$value'"; }else{ $parameterUrl .="&$key=$value"; } } return $parameterUrl; } public function spellUrl($pageString,$pageNumber,$pageText){ $isJs = preg_match('/javascript/',$this->pageUrl); if($isJs){ $parameterUrl = $this->spellParameterUrl($this->parameterArray,true); $pageUrl = $this->pageUrl.'('.$pageNumber.$parameterUrl.')'; $pageString = $pageString ."<a href=\"$pageUrl\">" . $pageText . "</a>"; }else{ $parameterUrl = $this->spellParameterUrl($this->parameterArray); $pageUrl = $this->pageUrl.'?page='.$pageNumber.$parameterUrl; $pageString = $pageString ."<a href=\"$pageUrl\">" . $pageText . "</a>"; } return $pageString; } } ?>
2、分页类使用实例代码
<?php include 'PageView.php'; header("Content-type:text/html;charset=utf-8"); $pageNo = $_GET['page']; $pageSize = 1; //分页数据 $pageData = array (array ('id' => 1 ), array ('id' => 2 ), array ('id' => 3 ), array ('id' => 4 ) ); //取得总行数 $count = 21; $test = array('type'=>1,'name'=>'add'); $pageUrl = ''; $pageUrl = 'javascript:tabPage'; //$pageParameterArray = null; $pageParameterArray = array('id'=>1,'type'=>'add'); //创建分页器 $p = new PageView ( $count, $pageSize, $pageNo, $pageData ,$pageUrl,$pageParameterArray); //生成页码 $pageViewString = $p->echoPageAsDiv (); $pageData = $p->pageData; echo '<style type="text/css"> <!-- .pagination {font-family: Tahoma;overflow: hidden; padding-top: 12px; text-align: center;} .pagination-tab { margin-bottom: 20px;} .pagination a, .pagination .page-cur, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-break, .pagination .page-skip { display: inline-block;font-family: Tahoma,SimSun,Arial; height: 22px;line-height:22px; margin: 0; min-width: 16px;padding: 0 5px; text-align: center; vertical-align: top; white-space: nowrap;text-decoration: none;} .pagination a, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-cur, .pagination .page-break { border: 1px solid #ed3d83; color:#e9357d; font-weight:bold;} .pagination a:hover { border: 1px solid #ed3d83;text-decoration: none; background-color:#f95f9d; color:#fff;} .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g { width: 36px; background-image: url(../static/img/page.gif);} .pagination .page-prev { background-position: -0px -38px; padding-left: 16px;} .pagination .page-prev_g { background-position:0px -59px; padding-left: 16px; color:#cbcbcb; font-weight:normal;} .pagination .page-next { background-position: 0px 0px; padding-right: 16px; font-weight:normal;} .pagination .page-next_g { background-position: -0px -19px; padding-right: 16px; color:#cbcbcb;} .pagination .page-cur {background-color: #f95f9d; border: 1px solid #ed3d83;color: #fff;font-weight: bold;} .pagination .page-break {border: medium none; background:none transparent; color:#333;} --> </style>'; echo $pageViewString; echo "<script type='text/javascript' src='/test/jquery.min.js'></script> <script type='text/javascript'> function tabPage(tid,id,type){ alert(tid); } </script>";
相关推荐
php完美分页类,支持无限分页,简洁大气样式,包你好用
一款适合各种分页的分页类,可以直接根据构造函数的提示直接使用,分页导航直接调用最后的那个函数,非常完美的分页,考虑到各种情况.
自己写的分页类,功能完整。可以自定义页面结构样式
【PHP分页技术详解】 PHP分页是一种在大型数据集展示中非常常见的技术,它能够有效地将大量数据分成多个小部分,便于用户逐页浏览,提高网页加载速度和用户体验。在给定的代码中,我们可以看到一个简单的PHP分页...
该分页系他人书写,本人修改! 附带详细使用方法 以及函数说明!可直接用于php项目 !支持多种分页方式!
php终极完美分页类php终极完美分页类
本文将详细讲解一个名为“PHP分页类,完美版”的工具,它适用于MVC框架,并具备多种分页模式,尤其适合新手学习和使用。 这个分页类的强大之处在于它提供了四种不同的分页模式,可以满足不同场景的需求。默认模式是...
介绍一个完美php文章分页类。 __construct是SubPages的构造函数,用来在创建类的时候自动运行. $each_disNums 每页显示的条目数 nums 总条目数 current_num 当前被选中的页 ...
Bootstrap完美分页是一种常见的网页设计技术,用于在大型数据集上实现高效的导航。这个资源包含了一个使用MySQL数据库、Bootstrap框架和PHP编程语言实现的响应式分页解决方案。Bootstrap是Twitter开发的一个开源前端...
本资源"完美的php分页类.zip"提供了一个强大的PHP分页类,它可以帮助开发者轻松地在网站项目中实现高效、灵活的分页效果。 这个分页类的核心功能可能包括以下几点: 1. **参数处理**:类会自动处理请求中的分页...
本篇文章将详细介绍如何利用jPages.js来实现完美的分页效果。 ### 一、jPages.js概述 jPages.js是一款基于jQuery的分页插件,其核心特点在于简单易用,提供了多种自定义选项,能够适应不同设计风格和需求。它不仅...
//这里用到了正则表达式,请参考“PHP中的正规表达式” $url_query=ereg_replace("(^|&)page=$page","",$url_query); //将处理后的URL的查询字串替换原来的URL的查询字串: $url=str_replace($parse_url["query"],$...
本文档提供了一个关于如何在PHP中实现与MySQL数据库完美结合的分页显示的实例。 首先,我们创建一个名为`joke`的数据表,其结构如下: ```sql CREATE TABLE joke ( id INT(5) NOT NULL AUTO_INCREMENT, biaoti ...
首先,我们来讲解PHP使用Mysqli类库实现完美分页效果的基本方法。在Web开发中,分页功能几乎是每个项目都会使用到的功能之一。分页能够提高用户体验,减轻服务器的压力。PHP是一种广泛用于Web开发的服务器端脚本语言...
Dede完美支持SQL分页归类是通过修改include/archives.class.php文件来实现的。开发者使用了PHP语言来实现SQL分页归类的功能,并使用了LEFT JOIN语句来连接三个表。这个技术可以帮助开发者轻松地实现SQL分页归类的...