分页类,支持一个页面显示多个分页,更实用,更灵活!
时间:2007-03-06
来源:互联网
<?
/**
* ***********************************************
* 分页类 VN-1.0
* Language: PHP5
* Author: YANG_YSB
* Date: 2007-3-6
* Description:
* page($datanum=0,$pagestring="page")为分页类,支持一个页面显示多个分页,更实用,更灵活。
* 参数 var int $datanum为总数据量,参数 var string $pagestring 为传递页数的变量名称,类将返
* 回一个数组,其中包含("shuju_liang")数据量、("hangshou")每页显示数量、("yeshou")总页数、("
* dangqiang_ye")当前页、(";PageOffset")偏移量开始和(";PageOnset")偏移量结束。显示“顶页,上一
* 页,下一页,尾页”的函数可以按自己的要求来写,例如: page_main($num=0,$hang=20,$str ="page")。
* Example:
* $p= new page(155,"b");
* $array=$p->_main(25));
*
*/
if(!isset($_PAGE_CLASS_)){
$_PAGE_CLASS_=true;
class page {
private //应用数据
$shuju_liang,
$yeshou=0,
$dangqiang_ye=0,
$canshu,
$urlchanshu;
public $PageOffset,
$PageOnset,
$hangshou=15;
function __construct($datanum=0,$pagestring="page"){ //构造函数
$this->shuju_liang=$datanum;
$this->canshu=$pagestring;
$this->urlchanshu="";
}
function __destruct() { //析构函数
unset($this->shuju_liang,
$this->yeshou,
$this->dangqiang_ye,
$this->canshu,
$this->urlchanshu,
$this->;PageOffset,
$this->PageOnset,
$this->hangshou
);
}
private function get_yeshou(){ //总页数
if( !empty($this->shuju_liang) ){
if( $this->shuju_liang < $this->hangshou ){ //如果总数据量小于行数,那么只有一页
$this->yeshou = 1;
}elseif($this->shuju_liang % $this->hangshou){ //取数据量除以行数的余数
$this->yeshou = (int)($this->shuju_liang / $this->hangshou) + 1; //如果有余数,则页数等于数据量除以行数的结果取整再加一
}else {
$this->yeshou = $this->shuju_liang / $this->hangshou; //如果没有余数,则页数等于总数据量除以每页数的结果
}
}else{
$this->yeshou = 1;
}
}
public function get_urlchanshu($tiaozhuan_ye=0){ //取得页面传递的各种参数
if($tiaozhuan_ye > $this->yeshou){
$tiaozhuan_ye=$this->yeshou;
}
if(!empty($_SERVER["QUERY_STRING"])){
$str=explode("&", $_SERVER["QUERY_STRING"]);
foreach ($str as $v=>$u){
if(ereg($this->canshu."=[[:digit:]]*",$u) or empty($u))unset($str[$v]);
}
if(!empty($tiaozhuan_ye))$str[]=$this->canshu."=".$tiaozhuan_ye;
$url =count($str) >0? $_SERVER["PHP_SELF"]."?".implode("&", $str):$_SERVER["PHP_SELF"];
}else{
$url =empty($tiaozhuan_ye)?$_SERVER["PHP_SELF"] : $_SERVER["PHP_SELF"]."?".$this->canshu."=".$tiaozhuan_ye;
}
return $url;
}
private function get_diangqian_ye(){ //当前页编号
if( isset($_REQUEST[$this->canshu]) ){
$this->dangqiang_ye = intval( $_REQUEST[$this->canshu] );
if($this->dangqiang_ye > $this->yeshou){
$this->dangqiang_ye = $this->yeshou;
}
if($this->dangqiang_ye < 1){
$this->dangqiang_ye=1;
}
}else{
$this->dangqiang_ye = 1;
}
}
private function get_PageOffset(){ //当前偏移量
$this->PageOffset=( $this->dangqiang_ye - 1 ) * $this->hangshou;
}
private function get_PageOnset(){ //当前偏移量
if($this->dangqiang_ye >= $this->yeshou){
$this->PageOnset=$this->shuju_liang;
}else{
$this->PageOnset=$this->PageOffset+$this->hangshou;
}
}
public function _main($hangshu=15){
$this->hangshou=$hangshu;
$this->get_yeshou();
$this->get_diangqian_ye();
$this->get_PageOffset();
$this->get_PageOnset();
return array("shuju_liang"=>$this->shuju_liang, //数据量
"hangshou"=>$this->hangshou, //每页显示数量
"yeshou"=>$this->yeshou, //总页数
"dangqiang_ye"=>$this->dangqiang_ye, //当前页
"PageOffset"=>$this->PageOffset, //偏移量开始
"PageOnset"=>$this->PageOnset //偏移量结束
);
}
}
/**
* *********************************************************
* 分页显示函数
*
* @param int $num 数据量
* @param int $hang 每页记录数
* @param string $str 当前页变量名
* @return string
* Example:
* $str = page_main(192,20,"d");
* echo $str;
*
*/
function page_main($num=0,$hang=20,$str="page"){
$p= new page($num,$str);
$arr=$p->_main($hang);
$s= "<div>数据量: {$arr['shuju_liang']}
每页记录数:{$arr['hangshou']}
当前页:{$arr['dangqiang_ye']}
<a href=\"{$p->get_urlchanshu(1)}\">顶页</a>
<a href=\"{$p->get_urlchanshu($arr['dangqiang_ye']-1)}\">上页</a>";
for($i=1;$i<=$arr['yeshou'];$i++){
$s.= "<a href=\"".$p->get_urlchanshu($i)."\">$i</a> ";
}
$s.= "<a href=\"{$p->get_urlchanshu($arr['dangqiang_ye']+1)}\">下页</a>
<a href=\"{$p->get_urlchanshu($arr['yeshou'])}\">尾页</a></div>";
$s.= " <form id=\"form1\" name=\"form1\" method=\"post\" action=\"{$p->get_urlchanshu(0)}\">
<input name=\"{$str}\" type=\"text\" size=\"1\" />
<input type=\"submit\" name=\"Submit\" value=\"go\" />
</form>";
unset($p,$arr);
return $s;
}
}//end _PAGE_CLASS_
?>
[ 本帖最后由 yang_ysb 于 2007-3-6 10:23 编辑 ]
/**
* ***********************************************
* 分页类 VN-1.0
* Language: PHP5
* Author: YANG_YSB
* Date: 2007-3-6
* Description:
* page($datanum=0,$pagestring="page")为分页类,支持一个页面显示多个分页,更实用,更灵活。
* 参数 var int $datanum为总数据量,参数 var string $pagestring 为传递页数的变量名称,类将返
* 回一个数组,其中包含("shuju_liang")数据量、("hangshou")每页显示数量、("yeshou")总页数、("
* dangqiang_ye")当前页、(";PageOffset")偏移量开始和(";PageOnset")偏移量结束。显示“顶页,上一
* 页,下一页,尾页”的函数可以按自己的要求来写,例如: page_main($num=0,$hang=20,$str ="page")。
* Example:
* $p= new page(155,"b");
* $array=$p->_main(25));
*
*/
if(!isset($_PAGE_CLASS_)){
$_PAGE_CLASS_=true;
class page {
private //应用数据
$shuju_liang,
$yeshou=0,
$dangqiang_ye=0,
$canshu,
$urlchanshu;
public $PageOffset,
$PageOnset,
$hangshou=15;
function __construct($datanum=0,$pagestring="page"){ //构造函数
$this->shuju_liang=$datanum;
$this->canshu=$pagestring;
$this->urlchanshu="";
}
function __destruct() { //析构函数
unset($this->shuju_liang,
$this->yeshou,
$this->dangqiang_ye,
$this->canshu,
$this->urlchanshu,
$this->;PageOffset,
$this->PageOnset,
$this->hangshou
);
}
private function get_yeshou(){ //总页数
if( !empty($this->shuju_liang) ){
if( $this->shuju_liang < $this->hangshou ){ //如果总数据量小于行数,那么只有一页
$this->yeshou = 1;
}elseif($this->shuju_liang % $this->hangshou){ //取数据量除以行数的余数
$this->yeshou = (int)($this->shuju_liang / $this->hangshou) + 1; //如果有余数,则页数等于数据量除以行数的结果取整再加一
}else {
$this->yeshou = $this->shuju_liang / $this->hangshou; //如果没有余数,则页数等于总数据量除以每页数的结果
}
}else{
$this->yeshou = 1;
}
}
public function get_urlchanshu($tiaozhuan_ye=0){ //取得页面传递的各种参数
if($tiaozhuan_ye > $this->yeshou){
$tiaozhuan_ye=$this->yeshou;
}
if(!empty($_SERVER["QUERY_STRING"])){
$str=explode("&", $_SERVER["QUERY_STRING"]);
foreach ($str as $v=>$u){
if(ereg($this->canshu."=[[:digit:]]*",$u) or empty($u))unset($str[$v]);
}
if(!empty($tiaozhuan_ye))$str[]=$this->canshu."=".$tiaozhuan_ye;
$url =count($str) >0? $_SERVER["PHP_SELF"]."?".implode("&", $str):$_SERVER["PHP_SELF"];
}else{
$url =empty($tiaozhuan_ye)?$_SERVER["PHP_SELF"] : $_SERVER["PHP_SELF"]."?".$this->canshu."=".$tiaozhuan_ye;
}
return $url;
}
private function get_diangqian_ye(){ //当前页编号
if( isset($_REQUEST[$this->canshu]) ){
$this->dangqiang_ye = intval( $_REQUEST[$this->canshu] );
if($this->dangqiang_ye > $this->yeshou){
$this->dangqiang_ye = $this->yeshou;
}
if($this->dangqiang_ye < 1){
$this->dangqiang_ye=1;
}
}else{
$this->dangqiang_ye = 1;
}
}
private function get_PageOffset(){ //当前偏移量
$this->PageOffset=( $this->dangqiang_ye - 1 ) * $this->hangshou;
}
private function get_PageOnset(){ //当前偏移量
if($this->dangqiang_ye >= $this->yeshou){
$this->PageOnset=$this->shuju_liang;
}else{
$this->PageOnset=$this->PageOffset+$this->hangshou;
}
}
public function _main($hangshu=15){
$this->hangshou=$hangshu;
$this->get_yeshou();
$this->get_diangqian_ye();
$this->get_PageOffset();
$this->get_PageOnset();
return array("shuju_liang"=>$this->shuju_liang, //数据量
"hangshou"=>$this->hangshou, //每页显示数量
"yeshou"=>$this->yeshou, //总页数
"dangqiang_ye"=>$this->dangqiang_ye, //当前页
"PageOffset"=>$this->PageOffset, //偏移量开始
"PageOnset"=>$this->PageOnset //偏移量结束
);
}
}
/**
* *********************************************************
* 分页显示函数
*
* @param int $num 数据量
* @param int $hang 每页记录数
* @param string $str 当前页变量名
* @return string
* Example:
* $str = page_main(192,20,"d");
* echo $str;
*
*/
function page_main($num=0,$hang=20,$str="page"){
$p= new page($num,$str);
$arr=$p->_main($hang);
$s= "<div>数据量: {$arr['shuju_liang']}
每页记录数:{$arr['hangshou']}
当前页:{$arr['dangqiang_ye']}
<a href=\"{$p->get_urlchanshu(1)}\">顶页</a>
<a href=\"{$p->get_urlchanshu($arr['dangqiang_ye']-1)}\">上页</a>";
for($i=1;$i<=$arr['yeshou'];$i++){
$s.= "<a href=\"".$p->get_urlchanshu($i)."\">$i</a> ";
}
$s.= "<a href=\"{$p->get_urlchanshu($arr['dangqiang_ye']+1)}\">下页</a>
<a href=\"{$p->get_urlchanshu($arr['yeshou'])}\">尾页</a></div>";
$s.= " <form id=\"form1\" name=\"form1\" method=\"post\" action=\"{$p->get_urlchanshu(0)}\">
<input name=\"{$str}\" type=\"text\" size=\"1\" />
<input type=\"submit\" name=\"Submit\" value=\"go\" />
</form>";
unset($p,$arr);
return $s;
}
}//end _PAGE_CLASS_
?>
[ 本帖最后由 yang_ysb 于 2007-3-6 10:23 编辑 ]
作者: yang_ysb 发布时间: 2007-03-06
不错,收藏了!
:)
:)
作者: luzhou 发布时间: 2007-03-18
收藏
作者: remote_addr 发布时间: 2007-03-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28