一个实例php mysql模板分页类
<?php教程 /* * 模板分页类,源于easp教程的数据库教程分页方法,算是easp分页的的php独立版 * 支持动态和静态分页方式 * * page([总记录数=1],[分页大小=20],[当前页=1],[显示页数=6],[分页参数='page'],[分页链接=当前页面],[是否静态=false]) * 动态: * 简单用法: * $page = new page(50); * $page->setpager('zjj','<div class="newpager">共有{recordcount} 个商品 当前第 {pageindex} 页 / 共 {pagecount} 页 分页: {first}{prev} {list} {next}{last} 转到 {jump} 页</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} 个商品 当前第 {pageindex} 页 / 共 {pagecount} 页 分页: {first}{prev} {list} {next}{last} 转到 {jump} 页</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} 个商品 当前第 {pageindex} 页 / 共 {pagecount} 页 分页: {first}{prev} {list} {next}{last} 转到 {jump} 页</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' => '«', 'prev' => '‹', 'next' => '›', 'last' => '»', '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; } }
本文地址:http://www.phprm.com/develop/36124.html
转载随意,但请附上文章地址:-)