特牛のPHPページング

28599 ワード

PHPペーパ作成、自動生成ペーパ番号、JS呼び出し関数
<?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; } } ?>
<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;} .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>

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();

効果図は以下の通りです.