【www.gdgbn.com--经典短信】

 
*/
class minupage
{
/**
   * config ,public
   */
var $page_name="p";//page标签,用来控制url页。比如说xxx.php?pb_page=2中的pb_page
var $next_page=">";//下一页
var $pre_page="<";//上一页
var $first_page="first";//首页
var $last_page="last";//尾页
var $pre_bar="<<";//上一分页条
var $next_bar=">>";//下一分页条
var $format_left="";
var $format_right="";
var $is_ajax=false;//是否支持ajax分页模式

/**
   * private
   *
   */
var $pagebarnum=10;//控制记录条的个数。
var $totalpage=0;//总页数
var $ajax_action_name="";//ajax动作名
var $nowindex=1;//当前页
var $url="";//url地址头
var $offset=0;

/**
   * constructor构造函数
   *
   * @param array $array["total"],$array["perpage"],$array["nowindex"],$array["url"],$array["ajax"]...
   */
function minupage($array)
{
   if(is_array($array)){
     if(!array_key_exists("total",$array))$this->error(__function__,"need a param of total");
     $total=intval($array["total"]);
     $perpage=(array_key_exists("perpage",$array))?intval($array["perpage"]):10;
     $nowindex=(array_key_exists("nowindex",$array))?intval($array["nowindex"]):"";
     $url=(array_key_exists("url",$array))?$array["url"]:"";
   }else{
     $total=$array;
     $perpage=10;
     $nowindex="";
     $url="";
   }
   if((!is_int($total))||($total<0))$this->error(__function__,$total." is not a positive integer!");
   if((!is_int($perpage))||($perpage<=0))$this->error(__function__,$perpage." is not a positive integer!");
   if(!empty($array["page_name"]))$this->set("page_name",$array["page_name"]);//设置pagename
   $this->_set_nowindex($nowindex);//设置当前页
   $this->_set_url($url);//设置链接地址
   $this->totalpage=ceil($total/$perpage);
   $this->offset=($this->nowindex-1)*$perpage;
   if(!empty($array["ajax"]))$this->open_ajax($array["ajax"]);//打开ajax模式
}
/**
   * 设定类中指定变量名的值,如果改变量不属于这个类,将throw一个exception
   *
   * @param string $var
   * @param string $value
   */
function set($var,$value)
{
   if(in_array($var,get_object_vars($this)))
     $this->$var=$value;
   else {
   $this->error(__function__,$var." does not belong to pb_page!");
   }
 
}
/**
   * 打开倒ajax模式
   *
   * @param string $action 默认ajax触发的动作。
   */
function open_ajax($action)
{
   $this->is_ajax=true;
   $this->ajax_action_name=$action;
}
/**
   * 获取显示"下一页"的代码
   *
   * @param string $style
   * @return string
   */
function next_page($style="")
{
   if($this->nowindex<$this->totalpage){
   return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style);
   }
   return "".$this->next_page."";
}

/**
   * 获取显示"上一页"的代码
   *
   * @param string $style
   * @return string
   */
function pre_page($style="")
{
   if($this->nowindex>1){
   return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style);
   }
   return "".$this->pre_page."";
}

/**
   * 获取显示"首页"的代码
   *
   * @return string
   */
function first_page($style="")
{
   if($this->nowindex==1){
       return "".$this->first_page."";
   }
   return $this->_get_link($this->_get_url(1),$this->first_page,$style);
}

/**
   * 获取显示"尾页"的代码
   *
   * @return string
   */
function last_page($style="")
{
   if($this->nowindex==$this->totalpage){
       return "".$this->last_page."";
   }
   return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);
}

function nowbar($style="",$nowindex_style="")
{
   $plus=ceil($this->pagebarnum/2);
   if($this->pagebarnum-$plus+$this->nowindex>$this->totalpage)$plus=($this->pagebarnum-$this->totalpage+$this->nowindex);
   $begin=$this->nowindex-$plus+1;
   $begin=($begin>=1)?$begin:1;
   $return="";
   for($i=$begin;$i<$begin+$this->pagebarnum;$i++)
   {
   if($i<=$this->totalpage){
     if($i!=$this->nowindex)
         $return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style));
     else
         $return.=$this->_get_text("".$i."");
   }else{
     break;
   }
   $return.="n";
   }
   unset($begin);
   return $return;
}
/**
   * 获取显示跳转按钮的代码
   *
   * @return string
   */
function select($url)
{
   $return="";
   return $return;
}

/**
   * 获取mysql教程 语句中limit需要的值
   *
   * @return string
   */
function offset()
{
   return $this->offset;
}

/**
   * 控制分页显示风格(你可以增加相应的风格)
   *
   * @param int $mode
   * @return string
   */
function show($mode=1,$url="")
{
   switch ($mode)
   {
   case "1":
     $this->next_page="下一页";
     $this->pre_page="上一页";
     return $this->pre_page().$this->nowbar().$this->next_page()."第".$this->select($url)."页";
     break;
   case "2":
     $this->next_page="下一页";
     $this->pre_page="上一页";
     $this->first_page="首页";
     $this->last_page="尾页";
     return $this->first_page().$this->pre_page()."[第".$this->nowindex."页]".$this->next_page().$this->last_page()."第".$this->select($url)."页";
     break;
   case "3":
     $this->next_page="下一页";
     $this->pre_page="上一页";
     $this->first_page="首页";
     $this->last_page="尾页";
     return $this->first_page().$this->pre_page().$this->next_page().$this->last_page();
     break;
   case "4":
     $this->next_page="下一页";
     $this->pre_page="上一页";
     return $this->pre_page().$this->nowbar().$this->next_page();
     break;
   case "5":
     return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this->next_bar();
     break;
   }
 
}
/*----------------private function (私有方法)-----------------------------------------------------------*/
/**
   * 设置url头地址
   * @param: string $url
   * @return boolean
   */
function _set_url($url="")
{
   if(!empty($url)){
       //手动设置
   $this->url=$url.((stristr($url,"?"))?"&":"?").$this->page_name."=";
   }else{
       //自动获取
   if(empty($_server["query_string"])){
       //不存在query_string时
     $this->url=$_server["request_uri"]."?".$this->page_name."=";
   }else{
       //
     if(stristr($_server["query_string"],$this->page_name."=")){
         //地址存在页面参数
     $this->url=str_replace($this->page_name."=".$this->nowindex,"",$_server["request_uri"]);
     $last=$this->url[strlen($this->url)-1];
     if($last=="?"||$last=="&"){
         $this->url.=$this->page_name."=";
     }else{
         $this->url.="&".$this->page_name."=";
     }
     }else{
         //
     $this->url=$_server["request_uri"]."&".$this->page_name."=";
     }//end if   
   }//end if
   }//end if
}

/**
   * 设置当前页面
   *
   */
function _set_nowindex($nowindex)
{
   if(empty($nowindex)){
   //系统获取
  
   if(isset($_get[$this->page_name])){
     $this->nowindex=intval($_get[$this->page_name]);
   }
   }else{
       //手动设置
   $this->nowindex=intval($nowindex);
   }
}
 
/**
   * 为指定的页面返回地址值
   *
   * @param int $pageno
   * @return string $url
   */
function _get_url($pageno=1)
{
   return $this->url.$pageno;
}

/**
   * 获取分页显示文字,比如说默认情况下_get_text("1")将返回[1]
   *
   * @param string $str
   * @return string $url
   */
function _get_text($str)
{
   return $this->format_left.$str.$this->format_right;
}

/**
   * 获取链接地址
*/
function _get_link($url,$text,$style=""){
   $style=(empty($style))?"":"class="".$style.""";
   if($this->is_ajax){
       //如果是使用ajax模式
   return "网页特效:".$this->ajax_action_name."("".$url."")">".$text."";
   }else{
   return "".$text."";
   }
}
/**
   * 出错处理方式
*/
function error($function,$errormsg)
{
     die("error in file ".__file__." ,function ".$function."() :".$errormsg);
}

/*
 * 计算前台页面的总页数
 * @param total  总记录数
 * @param num    每页的记录数
*/
function sumpage($total,$num)
{
  $nn=0;
  $nn=intval($total/$num);
  if((int)($total%$num)!=0)
  {
     $nn=$nn+1;
  }
  return $nn;
}

}

/*
前台代码调用
function minupage($array)     : 构造函数,参数( 数组(total总页数,perpage每页显示行数,nowindex当前页,url地址,ajax模式) )

使用案例:
$num=20;                          //设置每页显示的记录数
$p=isset($_get["p"])?intval($_get["p"]):1;    //获得传递的值,为空时即为零
$total=newssum($sort);       //获得的记录总条数           
$page=new minupage(array("total"=>$total,"perpage"=>$num));    //调用分页类
$p_start=($p-1) * $num;           //计算当页开始的记录数   
$sumpage=&$page->sumpage($total,$num);  //总页数

/页 共条记录,条/页,show(4);?>   显示为   11/20 页次 共400条记录 20条/页  上一页 11 12 13 14 15 下一页

分页调用方法

require_once("../libs/www.111cn.net/page.class.php");
$page=new minupage(array("total"=>1000,"perpage"=>20));
echo "mode:1
".$page->show();
echo "


mode:2
".$page->show(2);
echo "
mode:3
".$page->show(3);
echo "
mode:4
".$page->show(4);
echo "
开始ajax模式:";
$ajaxpage=new minupage(array("total"=>1000,"perpage"=>20,"ajax"=>"ajax_page","page_name"=>"test"));
echo "mode:1
".$ajaxpage->show();
*/

 

本文来源:http://www.gdgbn.com/zhufuduanxin/28250/