极光分页 1.06
时间:2007-07-23
来源:互联网
下载
<?
/*
* 名称: 极光分页
*
* 作者: DCD QQ: 15972801 web开发群: 3574636
*
* http://dcd.525ok.com
*
* 完成日期: 2007-6-25
*
* 版本:V1.06
*
* 特点:
*
* 一般情况下只要给这个类2个参数就能正常运行,使用很方便。
* URL中有其他变量时,也会自动加入相应的变量。
* 基本使用思路就是创建对象时,确定总数据量和每页显示数据量,后边就读取它的属性吧。
* 这个类和数据库没有任何直接关联,操作数据库请读取它里面的属性。
*
* 方法:
*
* ArrPager ArrPager(int dataTotal, int pageSize = 20);
* string show()
* string bar()
* string goto()
*
* 属性:
*
* var $dataTotal = 0;//总数据量
* var $dataBegin = 0;//当前页开始记录序号
* var $dataEnd = 0;//当前页结束记录序号
* var $dataNum = 0;//当前页显示的记录数。除非是最后一页,否则都和$pageSize一致
*
* var $pageSize = 20;//每页显示的数据量
* var $pageTotal = 0;//总页数
* var $page = 1;//当前页数
* var $pageUp = 1;//上一页页数
* var $pageDown = 1;//下一页页数
*
* var $pageVar = 'page';//地址栏的变量名
*
* var $barSize = 9;//
*
* var $strFirst = '首页';
* var $strPageUp = '上一页';
* var $strPageDown = '下一页';
* var $strLast = '尾页';
* var $strLeft = '[';
* var $strRight = ']';
* var $show1 = '页次:';
* var $show2 = '/';
* var $show3 = ' 每页:';
* var $show4 = '条记录';
*
* var $goto1 = '第';
* var $goto2 = '页';
*
*
* 1.04
* 版修复了一个致命BUG,防止从地址栏往网页里写入代码。
* 1.05
* 重新编写了大部分代码,修改变量名,与以前版本不兼容!
* 增加了show()方法,一般用来显示“页次:8/37 每页:25 共计:912”
* 1.06
* 又完全重写代码,以前写的不够OO,没有增加新功能,只是代码比较OO罢了,变量名和以前版本不兼容。
* $str 开头的字段,是一些常用的字符串,可自行修改。
*
*/
//使用示例
$page = new ArrPager(156,20);
echo $page->bar();
echo $page->goto();
echo $page->show();
echo '<br> 开始记录 '.$page->dataBegin.' 结束记录 '.$page->dataEnd.' 显示记录 '.$page->dataNum;
class ArrPager
{
var $dataTotal = 0;//总数据量
var $dataBegin = 0;//当前页开始记录序号
var $dataEnd = 0;//当前页结束记录序号
var $dataNum = 0;//当前页显示的记录数。除非是最后一页,否则都和$pageSize一致
var $pageSize = 20;//每页显示的数据量
var $pageTotal = 0;//总页数
var $page = 1;//当前页数
var $pageUp = 1;//上一页页数
var $pageDown = 1;//下一页页数
var $pageVar = 'page';//地址栏的变量名
var $barSize = 9;//bar最多显示多少数据
var $strFirst = '首页';
var $strPageUp = '上一页';
var $strPageDown = '下一页';
var $strLast = '尾页';
var $strLeft = '[';
var $strRight = ']';
var $strShow1 = '页次:';
var $strShow2 = '/';
var $strShow3 = ' 每页:';
var $strShow4 = '条记录';
var $strGoto1 = '第';
var $strGoto2 = '页';
/*
* 构造函数
* dataTotal int 总数据量
* pageSize int 每页显示数据数量
*/
public function ArrPager($dataTotal, $pageSize = 20)
{
$this->dataTotal = $dataTotal;
$this->pageSize = $pageSize;
$this->pageTotal = ceil($dataTotal/$pageSize);
$this->page = $_GET[$this->pageVar];
//不允许当前页数小于1
if (empty($_GET[$this->pageVar]) || $_GET[$this->pageVar] < 1)
{
$_GET[$this->pageVar] = 1;
$this->page = 1;
}
//不允许当前页数大于总页数
if ($_GET[$this->pageVar] > $this->pageTotal)
{
$_GET[$this->pageVar] = $this->pageTotal;
$this->page = $this->pageTotal;
}
$this->dataBegin = ($this->page - 1) * $this->pageSize;
$this->dataEnd = $this->page * $this->pageSize;
$this->dataNum = $this->pageSize;
if ($this->dataEnd > $this->dataTotal)
{
$this->dataEnd = $this->dataTotal;
$this->dataNum = $this->dataTotal - $this->dataBegin;
}
$this->pageUp = $this->page - 1;
if ($this->pageUp <= 1) $this->pageUp = 1;
$this->pageDown = $this->page + 1;
if ($this->pageDown >= $this->pageTotal) $this->pageDown = $this->pageTotal;
$this->get = $this->getVar();
}
/*
* 获取翻页
*/
public function bar()
{
$out = '';
$out .= $this->href(1, $this->strFirst)."\r\n ";
$out .= $this->href($this->pageUp, $this->strPageUp)."\r\n ";
$begin = $this->page - ceil($this->barSize / 2);
if ($begin < 1) $begin = 1;
$end = $begin + $this->barSize;
if ($end > $this->pageTotal)
{
$end = $this->pageTotal;
$begin = $end - $this->barSize;
if ($begin < 1) $begin = 1;
}
for ($i = $begin; $i <= $end; $i++)
{
$out.= $this->strLeft.$this->href($i,$i).$this->strRight." ";
}
$out.= $this->href($this->pageDown, $this->strPageDown)."\r\n ";
$out.= $this->href($this->pageTotal, $this->strLast)."\r\n ";
return $out;
}
/*
* 解析辅助信息
*/
public function show()
{
$out = $this->strShow1.$this->page.$this->strShow2.$this->pageTotal;
$out .= $this->strShow3.$this->pageSize.$this->strShow4;
return $out;
}
/*
* 下拉菜单
*/
public function goto()
{
$out = '<select name="select" onchange="javascript:window.location.href=this.options[this.selectedIndex].value">'."\r\n";
for ($i = 1; $i <= $this->pageTotal; $i++)
{
$out .= $this->option($i);
}
$out .= '</select>'."\r\n";
return $out;
}
private function option($num)
{
$selected = '';
if ($this->page == $num)
{
$selected = ' selected';
}
return '<option value="'.$_SERVER["SCRIPT_NAME"].$this->get.$num.'"'.$selected.'>'.$this->strGoto1.$num.$this->strGoto2.'</option>'."\r\n";
}
private function href($num, $str)
{
if ($num == $str && $str == $this->page)
{
return '<font color="#0000FF"><strong>'.$str.'</strong></font>';
}
elseif ($num == $this->page)
{
return $str;
}
else
{
return '<a href="'.$_SERVER["SCRIPT_NAME"].$this->get.$num.'">'.$str.'</a>';
}
}
private function getVar()
{
$out = '?';
foreach ($_GET as $key => $value)
{
if ($key == $this->pageVar)
{
continue;
}
$out .= $key.'='.$value.'&';
}
$out .= $this->pageVar.'=';
return $out;
}
}//end class
?>
<?
/*
* 名称: 极光分页
*
* 作者: DCD QQ: 15972801 web开发群: 3574636
*
* http://dcd.525ok.com
*
* 完成日期: 2007-6-25
*
* 版本:V1.06
*
* 特点:
*
* 一般情况下只要给这个类2个参数就能正常运行,使用很方便。
* URL中有其他变量时,也会自动加入相应的变量。
* 基本使用思路就是创建对象时,确定总数据量和每页显示数据量,后边就读取它的属性吧。
* 这个类和数据库没有任何直接关联,操作数据库请读取它里面的属性。
*
* 方法:
*
* ArrPager ArrPager(int dataTotal, int pageSize = 20);
* string show()
* string bar()
* string goto()
*
* 属性:
*
* var $dataTotal = 0;//总数据量
* var $dataBegin = 0;//当前页开始记录序号
* var $dataEnd = 0;//当前页结束记录序号
* var $dataNum = 0;//当前页显示的记录数。除非是最后一页,否则都和$pageSize一致
*
* var $pageSize = 20;//每页显示的数据量
* var $pageTotal = 0;//总页数
* var $page = 1;//当前页数
* var $pageUp = 1;//上一页页数
* var $pageDown = 1;//下一页页数
*
* var $pageVar = 'page';//地址栏的变量名
*
* var $barSize = 9;//
*
* var $strFirst = '首页';
* var $strPageUp = '上一页';
* var $strPageDown = '下一页';
* var $strLast = '尾页';
* var $strLeft = '[';
* var $strRight = ']';
* var $show1 = '页次:';
* var $show2 = '/';
* var $show3 = ' 每页:';
* var $show4 = '条记录';
*
* var $goto1 = '第';
* var $goto2 = '页';
*
*
* 1.04
* 版修复了一个致命BUG,防止从地址栏往网页里写入代码。
* 1.05
* 重新编写了大部分代码,修改变量名,与以前版本不兼容!
* 增加了show()方法,一般用来显示“页次:8/37 每页:25 共计:912”
* 1.06
* 又完全重写代码,以前写的不够OO,没有增加新功能,只是代码比较OO罢了,变量名和以前版本不兼容。
* $str 开头的字段,是一些常用的字符串,可自行修改。
*
*/
//使用示例
$page = new ArrPager(156,20);
echo $page->bar();
echo $page->goto();
echo $page->show();
echo '<br> 开始记录 '.$page->dataBegin.' 结束记录 '.$page->dataEnd.' 显示记录 '.$page->dataNum;
class ArrPager
{
var $dataTotal = 0;//总数据量
var $dataBegin = 0;//当前页开始记录序号
var $dataEnd = 0;//当前页结束记录序号
var $dataNum = 0;//当前页显示的记录数。除非是最后一页,否则都和$pageSize一致
var $pageSize = 20;//每页显示的数据量
var $pageTotal = 0;//总页数
var $page = 1;//当前页数
var $pageUp = 1;//上一页页数
var $pageDown = 1;//下一页页数
var $pageVar = 'page';//地址栏的变量名
var $barSize = 9;//bar最多显示多少数据
var $strFirst = '首页';
var $strPageUp = '上一页';
var $strPageDown = '下一页';
var $strLast = '尾页';
var $strLeft = '[';
var $strRight = ']';
var $strShow1 = '页次:';
var $strShow2 = '/';
var $strShow3 = ' 每页:';
var $strShow4 = '条记录';
var $strGoto1 = '第';
var $strGoto2 = '页';
/*
* 构造函数
* dataTotal int 总数据量
* pageSize int 每页显示数据数量
*/
public function ArrPager($dataTotal, $pageSize = 20)
{
$this->dataTotal = $dataTotal;
$this->pageSize = $pageSize;
$this->pageTotal = ceil($dataTotal/$pageSize);
$this->page = $_GET[$this->pageVar];
//不允许当前页数小于1
if (empty($_GET[$this->pageVar]) || $_GET[$this->pageVar] < 1)
{
$_GET[$this->pageVar] = 1;
$this->page = 1;
}
//不允许当前页数大于总页数
if ($_GET[$this->pageVar] > $this->pageTotal)
{
$_GET[$this->pageVar] = $this->pageTotal;
$this->page = $this->pageTotal;
}
$this->dataBegin = ($this->page - 1) * $this->pageSize;
$this->dataEnd = $this->page * $this->pageSize;
$this->dataNum = $this->pageSize;
if ($this->dataEnd > $this->dataTotal)
{
$this->dataEnd = $this->dataTotal;
$this->dataNum = $this->dataTotal - $this->dataBegin;
}
$this->pageUp = $this->page - 1;
if ($this->pageUp <= 1) $this->pageUp = 1;
$this->pageDown = $this->page + 1;
if ($this->pageDown >= $this->pageTotal) $this->pageDown = $this->pageTotal;
$this->get = $this->getVar();
}
/*
* 获取翻页
*/
public function bar()
{
$out = '';
$out .= $this->href(1, $this->strFirst)."\r\n ";
$out .= $this->href($this->pageUp, $this->strPageUp)."\r\n ";
$begin = $this->page - ceil($this->barSize / 2);
if ($begin < 1) $begin = 1;
$end = $begin + $this->barSize;
if ($end > $this->pageTotal)
{
$end = $this->pageTotal;
$begin = $end - $this->barSize;
if ($begin < 1) $begin = 1;
}
for ($i = $begin; $i <= $end; $i++)
{
$out.= $this->strLeft.$this->href($i,$i).$this->strRight." ";
}
$out.= $this->href($this->pageDown, $this->strPageDown)."\r\n ";
$out.= $this->href($this->pageTotal, $this->strLast)."\r\n ";
return $out;
}
/*
* 解析辅助信息
*/
public function show()
{
$out = $this->strShow1.$this->page.$this->strShow2.$this->pageTotal;
$out .= $this->strShow3.$this->pageSize.$this->strShow4;
return $out;
}
/*
* 下拉菜单
*/
public function goto()
{
$out = '<select name="select" onchange="javascript:window.location.href=this.options[this.selectedIndex].value">'."\r\n";
for ($i = 1; $i <= $this->pageTotal; $i++)
{
$out .= $this->option($i);
}
$out .= '</select>'."\r\n";
return $out;
}
private function option($num)
{
$selected = '';
if ($this->page == $num)
{
$selected = ' selected';
}
return '<option value="'.$_SERVER["SCRIPT_NAME"].$this->get.$num.'"'.$selected.'>'.$this->strGoto1.$num.$this->strGoto2.'</option>'."\r\n";
}
private function href($num, $str)
{
if ($num == $str && $str == $this->page)
{
return '<font color="#0000FF"><strong>'.$str.'</strong></font>';
}
elseif ($num == $this->page)
{
return $str;
}
else
{
return '<a href="'.$_SERVER["SCRIPT_NAME"].$this->get.$num.'">'.$str.'</a>';
}
}
private function getVar()
{
$out = '?';
foreach ($_GET as $key => $value)
{
if ($key == $this->pageVar)
{
continue;
}
$out .= $key.'='.$value.'&';
}
$out .= $this->pageVar.'=';
return $out;
}
}//end class
?>
作者: DCD 发布时间: 2007-07-23
:lol 分页的太多了,不过还是要看看效果去
作者: pack08 发布时间: 2007-07-23
非常支持

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