php 通用分頁類

來源:互聯網
上載者:User

class show_page {

    /**
     * 頁面輸出結果
     *
     * @var string
     */
 var $output;

    /**
     * 使用該類的檔案,預設為 PHP_SELF
     *
     * @var string
     */
 var $file;

    /**
     * 頁數傳遞變數,預設為 'p'
     *
     * @var string
     */
 var $pvar = "p";

    /**
     * 頁面大小
     *
     * @var integer
     */
 var $psize;

    /**
     * 當前頁面
     *
     * @var ingeger
     */
 var $curr;

    /**
     * 要傳遞的變數數組
     *
     * @var array
     */
 var $varstr;

    /**
     * 總頁數
     *
     * @var integer
     */
    var $tpage;

    /**
     * 分頁設定
     *
     * @access public
     * @param int $pagesize 頁面大小
     * @param int $total    總記錄數
     * @param int $current  當前頁數,預設會自動讀取
     * @return void
     */
    function set($pagesize=20,$total,$current=false) {
  global $HTTP_SERVER_VARS,$HTTP_GET_VARS;

  $this->tpage = ceil($total/$pagesize);
  if (!$current) {$current = $HTTP_GET_VARS[$this->pvar];}
  if ($current>$this->tpage) {$current = $this->tpage;}
  if ($current<1) {$current = 1;}

  $this->curr  = $current;
  $this->psize = $pagesize;

  if (!$this->file) {$this->file = $HTTP_SERVER_VARS['PHP_SELF'];}

  if ($this->tpage > 1) {
           
   if ($current>10) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current-10).($this->varstr).' title="前十頁">&lt;&lt;&lt;</a>&nbsp;';
   }
            if ($current>1) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current-1).($this->varstr).' title="前一頁">&lt;&lt;</a>&nbsp;';
   }

            $start = floor($current/10)*10;
            $end = $start+9;

            if ($start<1)   {$start=1;}
            if ($end>$this->tpage) {$end=$this->tpage;}

            for ($i=$start; $i<=$end; $i++) {
                if ($current==$i) {
                    $this->output.='<font color="red">'.$i.'</font>&nbsp;';    //輸出當前頁數
                } else {
                    $this->output.='<a href="'.$this->file.'?'.$this->pvar.'='.$i.$this->varstr.'">['.$i.']</a>&nbsp;';    //輸出頁數
                }
            }

            if ($current<$this->tpage) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current+1).($this->varstr).' title="下一頁">&gt;&gt;</a>&nbsp;';
   }
            if ($this->tpage>10 && ($this->tpage-$current)>=10 ) {
    $this->output.='<a href='.$this->file.'?'.$this->pvar.'='.($current+10).($this->varstr).' title="下十頁">&gt;&gt;&gt;</a>';
   }
  }
 }

    /**
     * 要傳遞的變數設定
     *
     * @access public
     * @param array $data   要傳遞的變數,用數組來表示,參見上面的例子
     * @return void
     */ 
 function setvar($data) {
  foreach ($data as $k=>$v) {
   $this->varstr.='&amp;'.$k.'='.urlencode($v);
  }
 }

    /**
     * 分頁結果輸出
     *
     * @access public
     * @param bool $return 為真時返回一個字串,否則直接輸出,預設直接輸出
     * @return string
     */
 function output($return = false) {
  if ($return) {
   return $this->output;
  } else {
   echo $this->output;
  }
 }

    /**
     * 產生Limit語句
     *
     * @access public
     * @return string
     */
    function limit() {
  return (($this->curr-1)*$this->psize).','.$this->psize;
 }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.