分頁

基本

<?php
/**
 * 基礎分頁
 * @param  [type]  $pnumrow 總共的數量
 * @param  [type]  $p       當前頁面 1 ~
 * @param  integer $knum    每頁顯示數量 預設20
 * @return [type]           直接echo
 */
function pages($pnumrow,$p,$knum=20)
{

// bootstrap 基本版
echo '<nav style="margin: 10px 50px;text-align: center;">
  <ul class="pagination">';

//計算頁數
$pg=ceil($pnumrow/$knum);
    // 第一頁
    echo '<li><a href="works.php?p=1"><span aria-hidden="true">&laquo;</span>
    <span class="sr-only">Previous</span></a></li>';

if($pg>0)
    { 
        for ($i=1; $i <= $pg; $i++) { 
            if(abs($i-$p)<=5){ //只顯示附近5頁
    echo '<li class="',($i==$p)?'active':'','"><a href="works.php?p=',$i,'">',$i,'</a></li>';
            }
        }
    }
    // 最後一頁
    echo '<li><a href="works.php?p=',$pg,'"><span aria-hidden="true">&raquo;</span>
    <span class="sr-only">Next</span></a></li>';
  echo '</ul>
</nav>';
}

改良


/**
 * Cpage 分頁
 *
 * 用法
 * $cpage=new Cpage('url','總數量',$page,array('參數名稱'=>'參數值'),<顯示幾筆>,<總頁數>);
 * $cpage->sum()->show();
 * 
 */
class Cpage
{
    var $url, $num, $each, $arg, $page, $end; 

    /**
     * 初始化
     * @param  string   $url  URL
     * @param  integer  $num  總數量
     * @param  integer  $page [現在是第幾頁]
     * @param  array    $arg  傳遞變數 ('key'=>value)
     * @param  integer  $each [每頁顯示多少筆] (可省略)
     * @param  integer  $end  總頁數 (可省略)
     * @return [type]        
     */
    function __construct($url='#',$num=0,$page=1,$args=Array(),$each = 20,$end=1)
    {
        $this->url  = $url  ; // 網址
        $this->num  = $num  ; //總數量
        $this->each = $each ; //

        $this->page = ($page>1)?intval($page):1 ; // 現在頁數 = 1 // 只要不是大於1 就是 1
        $this->end = $end ; // 總頁數 = 1
        $arg='?';
        foreach ($args as $key => $v) {
            if($v===''||$v===null){continue;}
            $arg=$arg.$key.'='.$v.'&';
        }
        $this->arg  = $arg  ; //變數
    }

    /**
     * 計算頁數 
     * @return [type] [description]
     */
    public function sum(){
        $nu=floor($this->num/$this->each);
        $this->end=($this->num%$this->each==0)?($nu):($nu+1);
        return $this;
    }

    /**
     * 顯示分頁
     * @return [type] [description]
     */

    public function show(){

    echo '<!--分頁-->
        <div class="row datatables-footer">
         <div class="col-sm-12 col-md-6">
          <div class="dataTables_info" id="datatable-editable_info" role="status" aria-live="polite">
            資料筆數: ' , $this->num , ' 筆  <1 - ',$this->end,'>
          </div>
         </div>';
    if($this->num>0){
         echo '<div class="col-sm-12 col-md-6">
          <div class="dataTables_paginate paging_bs_normal" id="datatable-editable_paginate">
           <ul class="pagination">';
        echo '<li class="prev ',($this->page==1)?'disabled':'','"><a href="',$this->url,$this->arg,'&p=1"><span class="fa fa-chevron-left"></span></a></li>';
            for($i=1; $i<=$this->num; $i++){ // 顯示全部
                if($i<=($this->page+5)||$i>=($this->page-5)){ // 鎖住,只顯示前後五筆
                    echo '<li ',($i==$this->page)?'class="active"':'','><a href="',$this->url,$this->arg,'&p=',$i,'">',$i,'</a></li>';
                }
            }
        echo '<li class="next ',($this->page==$this->end)?'disabled':'','"><a href="',$this->url,$this->arg,'&p=',$this->end,'"><span class="fa fa-chevron-right"></span></a></li>';
     echo '</ul>
          </div>';
    }
         echo '</div>
        </div>
        <!--分頁 END-->';

    }

}

results matching ""

    No results matching ""