`

php完美分页

    博客分类:
  • php
 
阅读更多

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分页...

    php完美分页类支持ajax等多种分页模式

    该分页系他人书写,本人修改! 附带详细使用方法 以及函数说明!可直接用于php项目 !支持多种分页方式!

    php终极完美分页类

    php终极完美分页类php终极完美分页类

    PHP分页类,完美版(可以植入到MVC框架中)

    本文将详细讲解一个名为“PHP分页类,完美版”的工具,它适用于MVC框架,并具备多种分页模式,尤其适合新手学习和使用。 这个分页类的强大之处在于它提供了四种不同的分页模式,可以满足不同场景的需求。默认模式是...

    完美php文章分页类.zip

    介绍一个完美php文章分页类。 __construct是SubPages的构造函数,用来在创建类的时候自动运行.  $each_disNums 每页显示的条目数 nums 总条目数  current_num 当前被选中的页 ...

    Bootstrap完美分页

    Bootstrap完美分页是一种常见的网页设计技术,用于在大型数据集上实现高效的导航。这个资源包含了一个使用MySQL数据库、Bootstrap框架和PHP编程语言实现的响应式分页解决方案。Bootstrap是Twitter开发的一个开源前端...

    完美的php分页类.zip

    本资源"完美的php分页类.zip"提供了一个强大的PHP分页类,它可以帮助开发者轻松地在网站项目中实现高效、灵活的分页效果。 这个分页类的核心功能可能包括以下几点: 1. **参数处理**:类会自动处理请求中的分页...

    JQ利用jPages.js实现完美分页

    本篇文章将详细介绍如何利用jPages.js来实现完美的分页效果。 ### 一、jPages.js概述 jPages.js是一款基于jQuery的分页插件,其核心特点在于简单易用,提供了多种自定义选项,能够适应不同设计风格和需求。它不仅...

    php分页类很完美

    //这里用到了正则表达式,请参考“PHP中的正规表达式” $url_query=ereg_replace("(^|&)page=$page","",$url_query); //将处理后的URL的查询字串替换原来的URL的查询字串: $url=str_replace($parse_url["query"],$...

    php完美结合mysql数据库记录分页显示.pdf

    本文档提供了一个关于如何在PHP中实现与MySQL数据库完美结合的分页显示的实例。 首先,我们创建一个名为`joke`的数据表,其结构如下: ```sql CREATE TABLE joke ( id INT(5) NOT NULL AUTO_INCREMENT, biaoti ...

    PHP使用Mysqli类库实现完美分页效果的方法

    首先,我们来讲解PHP使用Mysqli类库实现完美分页效果的基本方法。在Web开发中,分页功能几乎是每个项目都会使用到的功能之一。分页能够提高用户体验,减轻服务器的压力。PHP是一种广泛用于Web开发的服务器端脚本语言...

    dede完美支持sql分页归类.pdf

    Dede完美支持SQL分页归类是通过修改include/archives.class.php文件来实现的。开发者使用了PHP语言来实现SQL分页归类的功能,并使用了LEFT JOIN语句来连接三个表。这个技术可以帮助开发者轻松地实现SQL分页归类的...

Global site tag (gtag.js) - Google Analytics