lwter
(lwter)
注册会员

一般会员
UID 28567
精华
0
积分 92
帖子 101
金钱 92 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-5-15
状态 离线
|
与数据库分离的分页类
<? /////////////////////////////////////// // FileName: page.class.php // Last Update: 2006-06-18 /////////////////////////////////////// /* ** 版 本:1.0 ** 数 据 库:postgresql ** 制作日期:2006-06-18 ** 程序设计:neway lwter 刘伟韬 ([email]lwter@sina.com[/email]) ** 如您使用本程序,请保留以上信息。 */ ?> <? /** * 显示效果 * * << 1 2 [3] 4 5 ... 100 >> * 上一页 显示前5页 最后一页 下一页 * * << 1 ... 96 97 98 [99] 100 >> * 上一页 第一页 显示后5页 下一页 * * << 1 ... [5] 6 7 8 9 ... 100 >> * 上一页 第一页 显示中间5页 最后一页 下一页 * * */ class page { var $numberPerPage = 30; // 每页显示记录 var $prv = '<'; // 上一条记录样式 var $next = '>'; // 下一条记录样式 var $omit = '<span class="break">...</span>'; var $visitedStar = '<span class="this-page">'; // 当前记录不显示链接开始标记 var $visitedEnd = '</span>'; // 当前记录不显示链接结束标记 var $startpage = 0; // 数据记录开始 var $sbar = ''; // 主要用于显示 1 ... [6][7]8[9][10] ... 100 的样式 var $sBarInfo = ''; // 导航信息显示,如 总有1000条记录,有14页。。。 var $url; // 当前页的URL var $adjustNumber = 2; // 对当前页码进行正负调整, 例: 当前页码是8 , $adjustNumber = 2, 那么显示 [6][7]8[9][10] var $prvpage = 1; // 前一页码 当前页码 - $adjustNumber var $nextpage = 1; // 后一页码 当前页码 + $adjustNumber var $sE = ''; // 显示1 var $sT = ''; // 显示最后页码 /** * 初始函数 * * @param int $totalRecord * @param int $page * @return page */ function pageBar($totalRecord,$page) { $pages = ceil($totalRecord/$this->numberPerPage); $page = ($page > $pages) ? $pages:$page; $this->prvpage = $page - $this->adjustNumber; $this->nextpage = $page + $this->adjustNumber; $this->prvpage = ($this->prvpage <=1) ? 1:$this->prvpage; $this->nextpage = ($this->nextpage >= $pages) ? $pages:$this->nextpage; $this->prvpage = ($this->nextpage >= $pages) ? $pages - $this->adjustNumber:$this->prvpage; $this->prvpage = ($this->prvpage <=1) ? 1:$this->prvpage; for ($i=$this->prvpage;$i<=$this->nextpage;$i++) { if ($page > 1) { $prv = '<a href="'.$this->url.'&page='.($page-1).'" title="第 '.($page-1).' 页"><<</a>'; } else { $prv = ''; } if ($page < $pages) { $end = '<a href="'.$this->url.'&page='.($page+1).'" title="第 '.($page+1).' 页">>></a>'; } else { $end = ''; } if ($page - $this->adjustNumber <=1 ) { $this->sT = ''; $this->sE = $this->omit.'<a href="'.$this->url.'&page='.$pages.'" title="第 '.$pages.' 页">'.$pages.'</a>'; } else if ($page + $this->adjustNumber >= $pages) { $this->sT = '<a href="'.$this->url.'&page=1" title="第 1 页">1</a>'.$this->omit; $this->sE = ''; } else { $this->sT = '<a href="'.$this->url.'&page=1" title="第 1 页">1</a>'.$this->omit; $this->sE = $this->omit.'<a href="'.$this->url.'&page='.$pages.'" title="第 '.$pages.' 页">'.$pages.'</a>'; } if ($i == $page) { $this->sbar .= $this->visitedStar.$i.$this->visitedEnd; } else { $this->sbar .= '<a href="'.$this->url.'&page='.$i.'" title="第 '.$i.' 页">'.$i.'</a>'; } } $this->startpage = ($page-1)*$this->numberPerPage; $lastrecord = (($this->startpage + $this->numberPerPage) > $totalRecord) ? $totalRecord:($this->startpage + $this->numberPerPage); $this->sBarInfo = "共 <strong>$totalRecord</strong> 条记录 每页 <strong>$this->numberPerPage</strong> 条记录 共 <strong>$pages</strong> 页 当前显示 <strong>".($this->startpage + 1)."</strong> - <strong>".$lastrecord."</strong> 条记录<br />"; $this->sbar = $prv.$this->sT.$this->sbar.$this->sE.$end; } /** * 取得导航信息 * * @return string */ function getBarInfo() { return $this->sBarInfo; } /** * 取得导航栏 * * @return string */ function getPageBar() { return $this->sbar; } /** * 取得开始记录 * * @return int */ function getStartPage() { return $this->startpage; } } ?>
<? /** 以下调用 */ require_once('config.php'); // 这里页用 define('PAGENO',10); define('BARLEN',2); require_once('page.class.php'); require_once('db.class.php'); // 这个页面省略 $totalRecord = 1000 // 从数据库获取 $page = (isset($_GET['page']) && ($_GET['page'] > 1)) ? $_GET['page']:1;
$page = &new page() ; $page->pageBar($totalRecord,$page) $page->numberPerPage = PAGENO ; $page->adjustNumber = BARLEN;
注:数据库 $sql = "SELECT * FROM database LIMIT ".$page->getStartPage() .",".PAGENO; // mysql $sql = "SELECT * FROM database LIMIT ".PAGENO." OFFSET ".$page->getStartPage() ; // postgresql
$page->getBarInfo() ; // 导航信息栏 $page->getPageBar() ; // 数字栏 [1] ... [5][6]7[8][9] ... 1000
?> [ 本帖最后由 lwter 于 2006-7-15 01:59 PM 编辑 ]
|
|