超强PHP分页类2.0发布,支持自定义风格,默认4种显示模式 _2

来源:互联网 发布:法制网络知识竞赛 编辑:程序博客网 时间:2024/05/16 10:15
 /**
   * 获取显示跳转按钮的代码
   *
   * @return string
   */
function select
()
{
   
$return='<select name="PB_Page_Select">'
;
   for(
$i=1;$i<=$this->totalpage;$i
++)
   {
    if(
$i==$this->nowindex
){
    
$return.='<option value="'.$i.'" selected>'.$i.'</option>'
;
    }else{
    
$return.='<option value="'.$i.'">'.$i.'</option>'
;
    }
   }
   unset(
$i
);
  
$return.='</select>'
;
   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('<a href="">1</a>')将返回[<a href="">1</a>]
   *
   * @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 '<a '.$style.' href="javascript:'.$this->ajax_action_name.'(\''.$url.'\')">'.$text.'</a>'
;
   }else{
    return
'<a '.$style.' href="'.$url.'">'.$text.'</a>'
;
   }
}
/**
    * 出错处理方式
*/
function error($function,$errormsg
)
{
      die(
'Error in file <b>'.__FILE__.'</b> ,Function <b>'.$function.'()</b> :'.$errormsg
);
}
}
?>


提供一个简单的演示demo
PHP代码如下:

<?
require_once(
'../libs/classes/page.class.php'
);
$page=new page(array('total'=>1000,'perpage'=>20
));
echo
'mode:1<br>'.$page->show
();
echo
'<hr>mode:2<br>'.$page->show(2
);
echo
'<hr>mode:3<br>'.$page->show(3
);
echo
'<hr>mode:4<br>'.$page->show(4
);
echo
'<hr>开始AJAX模式:'
;
$ajaxpage=newpage(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'
));
echo
'mode:1<br>'.$ajaxpage->show
();
?>


效果图见附件!


提供自定义风格的演示demo一个:
PHP代码如下:

<?
require_once(
'../libs/classes/page.class.php'
);
class
mypage extends
page
{
     function
mypage($array
)
{
     
parent::page($array
);
  
$this->first_page=1
;
  
$this->last_page=$this->totalpage
;
  
$this->set('format_left',''
);
  
$this->set('format_right',''
);
}

function
show
()
{
     
$pagestr='<div class="pagenavi" id="lopage">页:'
;
  
$pagestr.=$this->first_page().' '
;
  
$pagestr.=$this->nowbar('','curr'
);
  
$pagestr.='<span class="break">...</span>'
;
  
$pagestr.=$this->last_page
();
  
$pagestr.='    (总计<span class="num">'.$this->totalpage.'</span>页) </div>'
;
  
$pagestr.='</div>'
;
   return
$pagestr
;
}
}
$page=new mypage(array('total'=>1000,'perpage'=>20
));
echo
$page->show
();
?>


其中用到的CSS样式

<style type="text/css">
<!--
.pagenavi { text-align:center;   font: 11px Arial, tahoma, sans-serif; padding-top: 20px; padding-bottom: 10px; margin: 0px; }
.pagenavi a {border: 1px solid #E2F1AF; background: #FFFFFF; text-decoration: none; color:#C16012; display:inline-block; padding-left:6px; padding-right:6px; padding-top:2px; padding-bottom:2px}
.pagenavi a:visited {border: 1px solid #E2F1AF; background: #FFFFFF; text-decoration: none; padding-left:6px; padding-right:6px; padding-top:2px; padding-bottom:2px}
.pagenavi .break {border: medium none;   text-decoration: none; color:#C16012; background:;; padding-left:6px; padding-right:6px; padding-top:2px; padding-bottom:2px}
.pagenavi .num {color:#C16012; font-size:12pt; padding-left:3px; padding-right:3px; padding-top:0; padding-bottom:0}
.pagenavi .curr {padding: 2px 6px; border-color: #999; font-weight: bold; font-size:12pt; background:transparent;}
.pagenavi a:hover {color: #C16012; background: #E2F1AF; text-decoration: none}
-->
</style>

原创粉丝点击