我写的一个分页类
时间:2007-01-30
来源:互联网
<?php
/**
* @autor xiake QQ:75239222 Mail:[email protected]
* 2007-1-29
* PHP versions 4 and 5
*/
define( 'PER_PAGE_NUM', 10 ); //定义第二种分页模式,每页显示多少页码数
class Page
{
var $currpage; //当前页码
var $pagesize; //每页显示记录数
var $secpage; //当前页码段数(第二种分页模式)
var $rscount; //记录总数
var $pagecount; //页码总数
var $secpagenum; //页码段总数(第二种分页模式)
var $url ; //页码链接
/**
* @var currpage 传递页码的变量
* @var pagesize 每页显示记录数
* @var rscount 总记录数
* @var secpage 当页码段数, 如果用第一种分页模式,这个参数不用管它
*/
function Page( $currpage, $pagesize, $rscount, $secpage='' )
{
$this->currpage = $currpage ? intval($currpage) : 1 ;
$this->pagesize = $pagesize = intval($pagesize);
$this->secpage = intval($secpage);
$this->rscount = intval($rscount);
$this->pagecount = ceil($this->rscount / $pagesize);
$this->secpagenum = ceil($this->pagecount / PER_PAGE_NUM);
$this->url = $_SERVER['REQUEST_URI'];
}
/**
* 普通分页模式
* example 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
*/
function navigation1()
{
$str = '';
$str .= '共'.$this->rscount.'条记录,';
$str .= '每页显示'.$this->pagesize.'条,';
$str .= '当前第<font color=red>'.$this->currpage.'</font>/'.$this->pagecount.'页';
if( $this->currpage > 1 ) {
$firstUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=1", $this->url) : $this->url.'&currpage=1';
$prevUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=".($this->currpage-1), $this->url) : $this->url.'&currpage='.($this->currpage-1);
$str .= ' <a href="'.$firstUrl.'">[首页]</a> ';
$str .= ' <a href="'.$prevUrl.'">[上页]</a> ';
}
else {
$str .= ' [首页] ';
$str .= ' [上页] ';
}
if( $this->currpage < $this->pagecount ) {
$nextUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=".($this->currpage+1), $this->url) : $this->url.'&currpage='.($this->currpage+1);
$lastUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=".$this->pagecount, $this->url) : $this->url.'&currpage='.$this->pagecount;
$str .= ' <a href="'.$nextUrl.'">[下页]</a> ';
$str .= ' <a href="'.$lastUrl.'">[尾页]</a> ';
}
else {
$str .= ' [下页] ';
$str .= ' [尾页] ';
}
//var_dump($str);
return $str;
}
/**
* 页码列表模式
* example 上页 11 12 13 14 15 16 17 18 19 20 21 下页
*/
function navigation2()
{
if( $this->secpagenum > 0 ) {
$str = '';
if( $this->secpage > 1 ) {
$prev = true;
}
else {
$prev = false;
}
if( $this->secpage < $this->secpagenum ) {
$next = true;
}
else {
$next = false;
}
if( $prev ) {
$prevUrl = strpos( $this->url, 'secpage=' ) !== false ? preg_replace( array("/secpage=\d*/", "/currpage=\d*/", "/&{2,}/"), array("secpage=".($this->secpage-1), "", "&"), $this->url ) : $this->url.'&secpage='.($this->secpage-1);
$str .= ' <a href='.$prevUrl.'>上页</a> ';
}
//这段开始的页码
$secPageStart = ($this->secpage - 1)*PER_PAGE_NUM + 1;
$secPageEnd = $secPageStart + PER_PAGE_NUM;
$secPageEnd = ($secPageEnd > $this->pagecount) ? $this->pagecount : $secPageEnd;
for( $i=$secPageStart ; $i<$secPageEnd ; $i++ ) {
if( strpos( $this->url, 'currpage=' ) !== false )
$url = preg_replace( "/currpage=\d*/", "currpage=".$i, $this->url );
else
$url = $this->url.'&currpage='.$i;
if( $this->currpage != $i )
$str .= ' <a href='.$url.'>'.$i.'</a> ';
else
$str .= ' <font color=red>'.$i.'</font> ';
}
if( $next ) {
$nextUrl = strpos( $this->url, 'secpage=' ) !== false ? preg_replace( array("/secpage=\d*/", "/currpage=\d*/", "/&{2,}/"), array("secpage=".($this->secpage+1), "", "&"), $this->url ) : $this->url.'&secpage='.($this->secpage+1);
$str .= ' <a href='.$nextUrl.'>下页</> ';
}
return $str;
}
return false;
}
}
?>
写的比较简单,可以在上面扩展
[ 本帖最后由 xiake 于 2007-1-29 17:14 编辑 ]
/**
* @autor xiake QQ:75239222 Mail:[email protected]
* 2007-1-29
* PHP versions 4 and 5
*/
define( 'PER_PAGE_NUM', 10 ); //定义第二种分页模式,每页显示多少页码数
class Page
{
var $currpage; //当前页码
var $pagesize; //每页显示记录数
var $secpage; //当前页码段数(第二种分页模式)
var $rscount; //记录总数
var $pagecount; //页码总数
var $secpagenum; //页码段总数(第二种分页模式)
var $url ; //页码链接
/**
* @var currpage 传递页码的变量
* @var pagesize 每页显示记录数
* @var rscount 总记录数
* @var secpage 当页码段数, 如果用第一种分页模式,这个参数不用管它
*/
function Page( $currpage, $pagesize, $rscount, $secpage='' )
{
$this->currpage = $currpage ? intval($currpage) : 1 ;
$this->pagesize = $pagesize = intval($pagesize);
$this->secpage = intval($secpage);
$this->rscount = intval($rscount);
$this->pagecount = ceil($this->rscount / $pagesize);
$this->secpagenum = ceil($this->pagecount / PER_PAGE_NUM);
$this->url = $_SERVER['REQUEST_URI'];
}
/**
* 普通分页模式
* example 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
*/
function navigation1()
{
$str = '';
$str .= '共'.$this->rscount.'条记录,';
$str .= '每页显示'.$this->pagesize.'条,';
$str .= '当前第<font color=red>'.$this->currpage.'</font>/'.$this->pagecount.'页';
if( $this->currpage > 1 ) {
$firstUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=1", $this->url) : $this->url.'&currpage=1';
$prevUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=".($this->currpage-1), $this->url) : $this->url.'&currpage='.($this->currpage-1);
$str .= ' <a href="'.$firstUrl.'">[首页]</a> ';
$str .= ' <a href="'.$prevUrl.'">[上页]</a> ';
}
else {
$str .= ' [首页] ';
$str .= ' [上页] ';
}
if( $this->currpage < $this->pagecount ) {
$nextUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=".($this->currpage+1), $this->url) : $this->url.'&currpage='.($this->currpage+1);
$lastUrl = strpos($this->url, 'currpage=') !== false ? preg_replace("/currpage=\d*/", "currpage=".$this->pagecount, $this->url) : $this->url.'&currpage='.$this->pagecount;
$str .= ' <a href="'.$nextUrl.'">[下页]</a> ';
$str .= ' <a href="'.$lastUrl.'">[尾页]</a> ';
}
else {
$str .= ' [下页] ';
$str .= ' [尾页] ';
}
//var_dump($str);
return $str;
}
/**
* 页码列表模式
* example 上页 11 12 13 14 15 16 17 18 19 20 21 下页
*/
function navigation2()
{
if( $this->secpagenum > 0 ) {
$str = '';
if( $this->secpage > 1 ) {
$prev = true;
}
else {
$prev = false;
}
if( $this->secpage < $this->secpagenum ) {
$next = true;
}
else {
$next = false;
}
if( $prev ) {
$prevUrl = strpos( $this->url, 'secpage=' ) !== false ? preg_replace( array("/secpage=\d*/", "/currpage=\d*/", "/&{2,}/"), array("secpage=".($this->secpage-1), "", "&"), $this->url ) : $this->url.'&secpage='.($this->secpage-1);
$str .= ' <a href='.$prevUrl.'>上页</a> ';
}
//这段开始的页码
$secPageStart = ($this->secpage - 1)*PER_PAGE_NUM + 1;
$secPageEnd = $secPageStart + PER_PAGE_NUM;
$secPageEnd = ($secPageEnd > $this->pagecount) ? $this->pagecount : $secPageEnd;
for( $i=$secPageStart ; $i<$secPageEnd ; $i++ ) {
if( strpos( $this->url, 'currpage=' ) !== false )
$url = preg_replace( "/currpage=\d*/", "currpage=".$i, $this->url );
else
$url = $this->url.'&currpage='.$i;
if( $this->currpage != $i )
$str .= ' <a href='.$url.'>'.$i.'</a> ';
else
$str .= ' <font color=red>'.$i.'</font> ';
}
if( $next ) {
$nextUrl = strpos( $this->url, 'secpage=' ) !== false ? preg_replace( array("/secpage=\d*/", "/currpage=\d*/", "/&{2,}/"), array("secpage=".($this->secpage+1), "", "&"), $this->url ) : $this->url.'&secpage='.($this->secpage+1);
$str .= ' <a href='.$nextUrl.'>下页</> ';
}
return $str;
}
return false;
}
}
?>
写的比较简单,可以在上面扩展
[ 本帖最后由 xiake 于 2007-1-29 17:14 编辑 ]
作者: xiake 发布时间: 2007-01-29
看上去还不错
作者: leehui1983 发布时间: 2007-01-29
谢谢
学PHP不久,感觉PHP在OO方面很灵活
学PHP不久,感觉PHP在OO方面很灵活
作者: xiake 发布时间: 2007-01-29

作者: 特蓝克斯 发布时间: 2007-02-01
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28