您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php 多风格的分页类(支持ajax分页)_PHP教程

2025/9/14 16:20:08发布16次查看
php教程 多风格的分页类(支持ajax分页)
/**
* example:
* 模式四种分页模式:
   require_once('../libs/classes/page.class.php');
   $page=new page(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);
   开启ajax:
   $ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
   echo 'mode:1
'.$ajaxpage->show();
   采用继承自定义分页显示模式:
*/
class page
{
/**
* config ,public
*/
var $page_name=pb_page;//page标签,用来控制url页
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 page($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))||($totalerror(__function__,$total.' is not a
positive integer!');
if((!is_int($perpage))||($perpageerror(__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->nowindextotalpage){
   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;$ipagebarnum;$i++)
{
   if($itotalpage){
    if($i!=$this->nowindex)
        $return.=$this->_get_text($this->_get_link($this->_get_url
($i),$i,$style));
    else
        $return.=$this->_get_text('class=.$nowindex_style.>'.$i.'
');
   }else{
    break;
   }
   $return.=n;
}
unset($begin);
return $return;
}
/**
* 获取显示跳转按钮的代码
*
* @return string
*/
function select()
{
   $return='';
for($i=1;$itotalpage;$i++)
{
   if($i==$this->nowindex){
    $return.=''.$i.'';
   }else{
    $return.=''.$i.'';
   }
}
unset($i);
$return.='';
return $return;
}
/**
* 获取mysql教程 语句中limit需要的值
*
* @return string
*/
function offset()
{
return $this->offset;
}
/**
* 控制分页显示风格
*
* @param int $mode
* @return string
*/
function show($mode=1)
{
switch ($mode)
{
   case '1':
    $this->next_page='下一页';
    $this->pre_page='上一页';
    return $this->pre_page().$this->nowbar().$this->next_page().'第'.$this-
>select().'页';
    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().'页';
    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')将返回[href=>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 'ajax_action_name.'(''.%24url.'')>'.$text.'';
}else{
   return ''.$text.'';
}
}
/**
   * 出错处理方式
*/
function error($function,$errormsg)
{
     die('error in file '.__file__.' ,function '.$function.'()
:'.$errormsg);
}
}
$page=new page(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 page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
echo 'mode:1
'.$ajaxpage->show();
?>
http://www.bkjia.com/phpjc/444777.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444777.htmltecharticlephp教程 多风格的分页类(支持ajax分页) ? /** * example: * 模式四种分页模式: require_once('../libs/classes/page.class.php'); $page=new page(array('total'=1000,'...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product