程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 一個實例php mysql模板分頁類

一個實例php mysql模板分頁類

編輯:關於PHP編程

<?php教程
/*
 * 模板分頁類,源於easp教程的數據庫教程分頁方法,算是easp分頁的的php獨立版
 * 支持動態和靜態分頁方式
 * easp官網http://easp.lengshi.com/
 * 作者:鐘晶晶
 * 日期:2010-11-3
 * 郵箱:[email protected]
 * 博客:http://blog.zaimer.com
 * page([總記錄數=1],[分頁大小=20],[當前頁=1],[顯示頁數=6],[分頁參數='page'],[分頁鏈接=當前頁面],[是否靜態=false])
 * 動態:
 * 簡單用法:
 * $page = new page(50);
 * $page->setpager('zjj','<div class="newpager">共有{recordcount} 個商品&nbsp;&nbsp;當前第&nbsp;{pageindex}&nbsp;頁&nbsp;/&nbsp;共&nbsp;{pagecount}&nbsp;頁&nbsp;分頁:&nbsp;{first}{prev}&nbsp;&nbsp;{list}&nbsp;&nbsp;{next}{last}&nbsp;&nbsp;轉到&nbsp;{jump}&nbsp;頁</div>',array("listlong"=>"6","first"=>"首頁","last"=>"尾頁","prev"=>"上一頁","next"=>"下一頁","list"=>"第*頁","jump"=>"select"));
 * echo $page->getpager('zjj');
 * 全參數用法:
 * $page = new page(50,20,1,6,'page','prrr.php',false);
 * $page->setpager('zjj','<div class="newpager">共有{recordcount} 個商品&nbsp;&nbsp;當前第&nbsp;{pageindex}&nbsp;頁&nbsp;/&nbsp;共&nbsp;{pagecount}&nbsp;頁&nbsp;分頁:&nbsp;{first}{prev}&nbsp;&nbsp;{list}&nbsp;&nbsp;{next}{last}&nbsp;&nbsp;轉到&nbsp;{jump}&nbsp;頁</div>',array("listlong"=>"6","first"=>"首頁","last"=>"尾頁","prev"=>"上一頁","next"=>"下一頁","list"=>"第*頁","jump"=>"select"));
 * echo $page->getpager('zjj');
 * 靜態:
 * $page = new page(50,20,1,6,'page','prrr{page}.html',true);
 * $page->setpager('zjj','<div class="newpager">共有{recordcount} 個商品&nbsp;&nbsp;當前第&nbsp;{pageindex}&nbsp;頁&nbsp;/&nbsp;共&nbsp;{pagecount}&nbsp;頁&nbsp;分頁:&nbsp;{first}{prev}&nbsp;&nbsp;{list}&nbsp;&nbsp;{next}{last}&nbsp;&nbsp;轉到&nbsp;{jump}&nbsp;頁</div>',array("listlong"=>"6","first"=>"首頁","last"=>"尾頁","prev"=>"上一頁","next"=>"下一頁","list"=>"第*頁","jump"=>"select"));
 * echo $page->getpager('zjj');
 */
class page {
 private $page_size; //每頁顯示的條目數
 private $total_size; //總條目數
 private $current_page; //當前被選中的頁
 private $sub_pages; //每次顯示的頁數
 private $total_pages; //總頁數
 private $page_tpl = array (); // 分頁模板
 private $pageparam;
 private $pagelink;
 private $static;
 
 function __construct($total_size = 1, $page_size = 20, $current_page = 1, $sub_pages = 6, $pageparam = 'page', $pagelink = '', $static = false) {
  $this->page_size = intval ( $page_size );
  $this->total_size = intval ( $total_size );
  if (! $current_page) {
   $this->current_page = 1;
  } else {
   $this->current_page = intval ( $current_page );
  }
  $this->total_pages = ceil ( $total_size / $page_size );
  $this->sub_pages = intval ( $sub_pages );
  $this->pageparam = $pageparam;
  $this->pagelink = (empty ( $pagelink ) ? $_server ["php_self"] : $pagelink);
  $this->static = $static;
  $this->page_tpl ['default'] = array ('tpl' => '<div class="pager">{first}{prev}{liststart}{list}{listend}{next}{last} 跳轉到{jump}頁</div>', 'config' => array () );
 
 }
 public function __set($param, $value) {
  $this->$param = $value;
 }
 public function __get($param) {
  return $this->$param;
 }
 /*
  __destruct析構函數,當類不在使用的時候調用,該函數用來釋放資源。
 */
 function __destruct() {
  unset ( $page_size ); //每頁顯示的條目數
  unset ( $total_size ); //總條目數
  unset ( $current_page ); //當前被選中的頁
  unset ( $sub_pages ); //每次顯示的頁數
  unset ( $total_pages ); //總頁數
  unset ( $page_tpl ); // 分頁模板
  unset ( $pageparam ); //分頁參數,默認page
  unset ( $pagelink );
  unset ( $static );
 }
 private function urlparameters($url = array()) {
  foreach ( $url as $key => $val ) {
   if ($key != $this->pageparam)
    $arg [] = $key . '=' . $val;
  }
  $arg [] = $this->pageparam . '=*';
  if ($this->static)
   return str_replace ( '{page}', '*', $this->pagelink );
  else
   return $this->pagelink . '?' . implode ( '&', $arg );
 }
 public function setpager($tpl_name = 'default', $tpl = '', $config = array()) {
  if (empty ( $tpl ))
   $tpl = $this->page_tpl ['default'] ['tpl'];
  if (empty ( $config ))
   $config = $this->page_tpl ['default'] ['config'];
  $this->page_tpl [$tpl_name] = array ('tpl' => $tpl, 'config' => $config );
 }
 public function getpager($tpl_name = 'default') {
  $this->getcurrentpage ();
  return $this->pager ( $this->page_tpl [$tpl_name] );
 }
 public function getcurrentpage() {
  $this->current_page = ($_get [$this->pageparam] <= intval ( $this->total_pages ) ? ($_get [$this->pageparam] < 1 ? 1 : $_get [$this->pageparam]) : intval ( $this->total_pages ));
 }
 public function pager($page_tpl = '') {
  if (empty ( $page_tpl ))
   $page_tpl = $this->page_tpl ['default'];
  $cfg = array ('recordcount' => intval ( $this->total_size ), 'pageindex' => intval ( $this->current_page ), 'pagecount' => intval ( $this->total_pages ), 'pagesize' => intval ( $this->page_size ), 'listlong' => intval ( $this->sub_pages ), 'listsidelong' => 2, 'list' => '*', 'currentclass' => 'current', 'link' => $this->urlparameters ( $_get ), 'first' => '&laquo;', 'prev' => '&#8249;', 'next' => '&#8250;', 'last' => '&raquo;', 'more' => '...', 'disabledclass' => 'disabled', 'jump' => 'input', 'jumpplus' => '', 'jumpaction' => '', 'jumplong' => 50 );
  if (! empty ( $page_tpl ['config'] )) {
   foreach ( $page_tpl ['config'] as $key => $val ) {
    if (array_key_exists ( $key, $cfg ))
     $cfg [$key] = $val;
   }
  }
  $tmps教程tr = $page_tpl ['tpl'];
  $pstart = $cfg ['pageindex'] - (($cfg ['listlong'] / 2) + ($cfg ['listlong'] % 2)) + 1;
  $pend = $cfg ['pageindex'] + $cfg ['listlong'] / 2;
  if ($pstart < 1) {
   $pstart = 1;
   $pend = $cfg ['listlong'];
  }
  if ($pend > $cfg ['pagecount']) {
   $pstart = $cfg ['pagecount'] - $cfg ['listlong'] + 1;
   $pend = $cfg ['pagecount'];
  }
  if ($pstart < 1)
   $pstart = 1;
  for($i = $pstart; $i <= $pend; $i ++) {
   if ($i == $cfg ['pageindex'])
    $plist .= '<span class="' . $cfg ['currentclass'] . '" >' . str_replace ( '*', $i, $cfg ['list'] ) . '</span> ';
   else
    $plist .= ' <a href="' . str_replace ( '*', $i, $cfg ['link'] ) . '"> ' . str_replace ( '*', $i, $cfg ['list'] ) . '</a> ';
  }
  if ($cfg ['listsidelong'] > 0) {
   if ($cfg ['listsidelong'] < $pstart) {
    for($i = 1; $i <= $cfg ['listsidelong']; $i ++) {
     $pliststart .= '<a href="' . str_replace ( '*', $i, $cfg ['link'] ) . '">' . str_replace ( '*', $i, $cfg ['list'] ) . '</a> ';
    }
    $pliststart .= ($cfg ['listsidelong'] + 1) == $pstart ? '' : $cfg ['more'] . ' ';
   } else {
    if ($cfg ['listsidelong'] >= $pstart && $pstart > 1) {
     for($i = 1; $i <= ($pstart - 1); $i ++) {
      $pliststart .= '<a href="' . str_replace ( '*', $i, $cfg ['link'] ) . '">' . str_replace ( '*', $i, $cfg ['list'] ) . '</a> ';
     }
    }
   }
   if (($cfg ['pagecount'] - $cfg ['listsidelong']) > $pend) {
    $plistend = ' ' . $cfg ['more'] . $plistend;
    for($i = (($cfg ['pagecount'] - $cfg ['listsidelong']) + 1); $i <= $cfg ['pagecount']; $i ++) {
     $plistend .= ' <a href="' . str_replace ( '*', $i, $cfg ['link'] ) . '"> ' . str_replace ( '*', $i, $cfg ['list'] ) . ' </a> ';
    }
   } else {
    if (($cfg ['pagecount'] - $cfg ['listsidelong']) <= $pend && $pend < $cfg ['pagecount']) {
     for($i = ($pend + 1); $i <= $cfg ['pagecount']; $i ++) {
      $plistend .= ' <a href="' . str_replace ( '*', $i, $cfg ['link'] ) . '"> ' . str_replace ( '*', $i, $cfg ['list'] ) . ' </a> ';
     }
    }
   }
  }
  if ($cfg ['pageindex'] > 1) {
   $pfirst = ' <a href="' . str_replace ( '*', '1', $cfg ['link'] ) . '">' . $cfg ['first'] . '</a> ';
   $pprev = ' <a href="' . str_replace ( '*', $cfg ['pageindex'] - 1, $cfg ['link'] ) . '">' . $cfg ['prev'] . '</a> ';
  } else {
   $pfirst = ' <span class="' . $cfg ['disabledclass'] . '">' . $cfg ['first'] . '</span> ';
   $pprev = ' <span class="' . $cfg ['disabledclass'] . '">' . $cfg ['prev'] . '</span> ';
  }
  if ($cfg ['pageindex'] < $cfg ['pagecount']) {
   $plast = ' <a href="' . str_replace ( '*', $cfg ['pagecount'], $cfg ['link'] ) . '">' . $cfg ['last'] . '</a> ';
   $pnext = ' <a href="' . str_replace ( '*', $cfg ['pageindex'] + 1, $cfg ['link'] ) . '">' . $cfg ['next'] . '</a> ';
  } else {
   $plast = ' <span class="' . $cfg ['disabledclass'] . '">' . $cfg ['last'] . '</span> ';
   $pnext = ' <span class="' . $cfg ['disabledclass'] . '">' . $cfg ['next'] . '</span> ';
  }
  switch (strtolower ( $cfg ['jump'] )) {
   case 'input' :
    $pjumpvalue = 'this.value';
    $pjump = '<input type="text" size="3" title="請輸入要跳轉到的頁數並回車"' . (($cfg ['jumpplus'] == '') ? '' : ' ' . $cfg ['jumpplus']);
    $pjump .= ' onkeydown="網頁特效:if(event.charcode==13||event.keycode==13){if(!isnan(' . $pjumpvalue . ')){';
    $pjump .= ($cfg ['jumpaction'] == '' ? ((strtolower ( substr ( $cfg ['link'], 0, 11 ) ) == 'javascript:') ? str_replace ( '*', $pjumpvalue, substr ( $cfg ['link'], 12 ) ) : " document.location.href='" . str_replace ( '*', ''+' . $pjumpvalue . '+'', $cfg ['link'] ) . '';') : str_replace ( "*", $pjumpvalue, $cfg ['jumpaction'] ));
    $pjump .= '}return false;}" />';
    break;
   case 'select' :
    $pjumpvalue = "this.options[this.selectedindex].value";
    $pjump = '<select ' . ($cfg ['jumpplus'] == '' ? ' ' . $cfg ['jumpplus'] . ' onchange="javascript:' : $cfg ['jumpplus']);
    $pjump .= ($cfg ['jumpaction'] == '' ? ((strtolower ( substr ( $cfg ['link'], 0, 11 ) ) == 'javascript:') ? str_replace ( '*', $pjumpvalue, substr ( $cfg ['link'], 12 ) ) : " document.location.href='" . str_replace ( '*', ''+' . $pjumpvalue . '+'', $cfg ['link'] ) . '';') : str_replace ( "*", $pjumpvalue, $cfg ['jumpaction'] ));
    $pjump .= '" title="請選擇要跳轉到的頁數"> ';
    if ($cfg ['jumplong'] == 0) {
     for($i = 0; $i <= $cfg ['pagecount']; $i ++) {
      $pjump .= '<option value="' . $i . '"' . (($i == $cfg ['pageindex']) ? ' selected="selected"' : '') . ' >' . $i . '</option> ';
     }
    } else {
     $pjumplong = intval ( $cfg ['jumplong'] / 2 );
     $pjumpstart = ((($cfg ['pageindex'] - $pjumplong) < 1) ? 1 : ($cfg ['pageindex'] - $pjumplong));
     $pjumpstart = ((($cfg ['pagecount'] - $cfg ['pageindex']) < $pjumplong) ? ($pjumpstart - ($pjumplong - ($cfg ['pagecount'] - $cfg ['pageindex'])) + 1) : $pjumpstart);
     $pjumpstart = (($pjumpstart < 1) ? 1 : $pjumpstart);
     $j = 1;
     for($i = $pjumpstart; $i <= $cfg ['pageindex']; $i ++, $j ++) {
      $pjump .= '<option value="' . $i . '"' . (($i == $cfg ['pageindex']) ? ' selected="selected"' : '') . '>' . $i . '</option> ';
     }
     $pjumplong = $cfg ['pagecount'] - $cfg ['pageindex'] < $pjumplong ? $pjumplong : $pjumplong + ($pjumplong - $j) + 1;
     $pjumpend = $cfg ['pageindex'] + $pjumplong > $cfg ['pagecount'] ? $cfg ['pagecount'] : $cfg ['pageindex'] + $pjumplong;
     for($i = $cfg ['pageindex'] + 1; $i <= $pjumpend; $i ++) {
      $pjump .= '<option value="' . $i . '">' . $i . '</option> ';
     }
    }
    $pjump .= '</select>';
    break;
  }
  $patterns = array ('/{recordcount}/', '/{pagecount}/', '/{pageindex}/', '/{pagesize}/', '/{list}/', '/{liststart}/', '/{listend}/', '/{first}/', '/{prev}/', '/{next}/', '/{last}/', '/{jump}/' );
  $replace = array ($cfg ['recordcount'], $cfg ['pagecount'], $cfg ['pageindex'], $cfg ['pagesize'], $plist, $pliststart, $plistend, $pfirst, $pprev, $pnext, $plast, $pjump );
  $tmpstr = chr ( 13 ) . chr ( 10 ) . preg_replace ( $patterns, $replace, $tmpstr ) . chr ( 13 ) . chr ( 10 );
  unset ( $cfg );
  return $tmpstr;
 }
}
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved