PHP头条
热点:

PHP分页类分享


分享一个常用的php分页类。有三种表现形式,具体效果图如下:

(1)

PHP分页类效果一

(2)

PHP分页类效果二

(3)

PHP分页类效果三

该php分页类的具体代码以及使用方法如下:

/**
*PHP分页类
 *
*show(2) 1 ... 62 63 64 65 66 67 68 ... 150
*分页样式
*#page{font:12px/16px arial}
*#page span{float:left;margin:0px 3px;}
*#page a{float:left;margin:0 3px;border:1px solid #ddd;padding:3px
*7px;text-decoration:none;color:#666}
*#page a.now_page,#page a:hover{color:#fff;background:#05c}
 */
class Pager{
	public $first_row;//起始行数
	public $list_rows;//列表每页显示行数
	protected $total_pages;//总页数
	protected $total_rows;//总行数
	protected $now_page;//当前页数
	protected $method='defalut';//处理情况 Ajax分页 Html分页(静态化时) 普通get方式
	protected $parameter='';
	protected $page_name;//分页参数的名称
	protected $ajax_func_name;
	public $plus=3;//分页偏移量
	protected $url;
	/**
	*构造函数
	 *
	*@param unknown_type $data
	 */
	public function __construct($data=array()){
		$this->total_rows=$data['total_rows'];
		$this->parameter=!empty($data['parameter'])?$data['parameter']:'';
		$this->list_rows=!empty($data['list_rows'])&&$data['list_rows']<=100?$data['list_rows']:15;
		$this->total_pages=ceil($this->total_rows / $this->list_rows);
		$this->page_name=!empty($data['page_name'])?$data['page_name']:'page';
		$this->ajax_func_name=!empty($data['ajax_func_name'])?$data['ajax_func_name']:'';
		$this->method=!empty($data['method'])?$data['method']:'';
		/* 当前页面 */
		if(!empty($data['now_page'])){
			$this->now_page=intval($data['now_page']);
		}else{
			$this->now_page=!empty($_GET[$this->page_name])?intval($_GET[$this->page_name]):1;
		}
		$this->now_page=$this->now_page<=0?1:$this->now_page;
		if(!empty($this->total_pages)&&$this->now_page>$this->total_pages){
			$this->now_page=$this->total_pages;
		}
		$this->first_row=$this->list_rows*($this->now_page-1);
	}
	/**
	*得到当前连接
	 *
	*@param
	*       	$page
	*@param
	*       	$text
	*@return string
	 */
	protected function _get_link($page,$text){
		switch ($this->method){
			case 'ajax' :
				$parameter='';
				if($this->parameter){
					$parameter=','.$this->parameter;
				}
				return '<a onclick="'.$this->ajax_func_name.'('.$page.$parameter.')" href="javascript:void(0)">'.$text.'</a>'."";
				break;
			case 'html' :
				$url=str_replace('?',$page,$this->parameter);
				return '<a href="'.$url.'">'.$text.'</a>';
				break;

			default :
				return '<a href="'.$this->_get_url($page).'">'.$text.'</a>';
				break;
		}
	}
	/**
	*设置当前页面链接
	 */
	protected function _set_url(){
		$url=$_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter;
		$parse=parse_url($url);
		if(isset($parse['query'])){
			parse_str($parse['query'],$params);
			unset($params[$this->page_name]);
			$url=$parse['path'].'?'.http_build_query($params);
		}
		if(!empty($params)){
			$url.='&';
		}
		$this->url=$url;
	}
	/**
	*得到$page的url
	 *
	*@param $page 页面
	*@return string
	 */
	protected function _get_url($page){
		if($this->url === NULL){
			$this->_set_url();
		}
		//	$lable=strpos('&',$this->url) === FALSE?'':'&';
		return $this->url.$this->page_name.'='.$page;
	}
	/**
	*得到第一页
	 *
	*@return string
	 */
	public function first_page($name='第一页'){
		if($this->now_page>5){
			return $this->_get_link('1',$name);
		}
		return '';
	}
	/**
	*最后一页
	 *
	*@param
	*       	$name
	*@return string
	 */
	public function last_page($name='最后一页'){
		if($this->now_page<$this->total_pages-5){
			return $this->_get_link($this->total_pages,$name);
		}
		return '';
	}
	/**
	*上一页
	 *
	*@return string
	 */
	public function up_page($name='上一页'){
		if($this->now_page!=1){
			return $this->_get_link($this->now_page-1,$name);
		}
		return '';
	}
	/**
	*下一页
	 *
	*@return string
	 */
	public function down_page($name='下一页'){
		if($this->now_page<$this->total_pages){
			return $this->_get_link($this->now_page+1,$name);
		}
		return '';
	}
	/**
	*分页样式输出
	 *
	*@param
	*       	$param
	*@return string
	 */
	public function show($param=1){
		if($this->total_rows<1){
			return '';
		}
		$className='show_'.$param;
		$classNames=get_class_methods($this);
		if(in_array($className,$classNames)){
			return $this->$className();
		}
		return '';
	}
	protected function show_2(){
		if($this->total_pages!=1){
			$return='';
			$return.=$this->up_page('<');
			for($i=1;$i<=$this->total_pages;$i++){
				if($i==$this->now_page){
					$return.="<a class='now_page'>$i</a>";
				}else{
					if($this->now_page-$i>=4&&$i!=1){
						$return.="<span class='pageMore'>...</span>";
						$i=$this->now_page-3;
					}else{
						if($i>=$this->now_page+5&&$i!=$this->total_pages){
							$return.="<span>...</span>";
							$i=$this->total_pages;
						}
						$return.=$this->_get_link($i,$i);
					}
				}
			}
			$return.=$this->down_page('>');
			return $return;
		}
	}
	protected function show_1(){
		$plus=$this->plus;
		if($plus+$this->now_page>$this->total_pages){
			$begin=$this->total_pages-$plus*2;
		}else{
			$begin=$this->now_page-$plus;
		}

		$begin=($begin>=1)?$begin:1;
		$return='';
		$return.=$this->first_page();
		$return.=$this->up_page();
		for($i=$begin;$i<=$begin+$plus*2;$i++){
			if($i>$this->total_pages){
				break;
			}
			if($i==$this->now_page){
				$return.="<a class='now_page'>$i</a>";
			}else{
				$return.=$this->_get_link($i,$i);
			}
		}
		$return.=$this->down_page();
		$return.=$this->last_page();
		return $return;
	}
	protected function show_3(){
		$plus=$this->plus;
		if($plus+$this->now_page>$this->total_pages){
			$begin=$this->total_pages-$plus*2;
		}else{
			$begin=$this->now_page-$plus;
		}
		$begin=($begin>=1)?$begin:1;
		$return='总计 '.$this->total_rows.' 个记录分为 '.$this->total_pages.' 页,当前第 '.$this->now_page.' 页 ';
		$return.=',每页 ';
		$return.='<input type="text" value="'.$this->list_rows.'" id="pageSize" size="3"> ';
		$return.=$this->first_page();
		$return.=$this->up_page();
		$return.=$this->down_page();
		$return.=$this->last_page();
		$return.='<select onchange="'.$this->ajax_func_name.'(this.value)" id="gotoPage">';
		for($i=$begin;$i<=$begin+10;$i++){
			if($i>$this->total_pages){
				break;
			}
			if($i==$this->now_page){
				$return.='<option selected="true" value="'.$i.'">'.$i.'</option>';
			}else{
				$return.='<option value="'.$i.'">'.$i.'</option>';
			}
		}
		$return.='</select>';
		return $return;
	}
}

类使用示例:

###处理html静态化页面分页的情况###
# method 处理环境 设置为 html
# parameter 为静态页面参数  www.phpernote.com/20-0-0-0-40-?.html 注意问号
# ?问号的位置会自动替换为去向页码
# now_page 当前页面(静态页面获取不到当前页面所以只有你传入)
$params=array(
			'total_rows'=>100,#(必须)
			'method'    =>'html',#(必须)
			'parameter' =>'www.phpernote.com/20-0-0-0-40-?.html', #(必须)
			'now_page'  =>$_GET['p'], #(必须)
			'list_rows' =>10,#(可选) 默认为15
);
$page=new Pager($params);
   echo $page->show(1);
   #<a href="www.phpernote.com/20-0-0-0-40-2.html">2</a>

###处理ajax分页的情况###
# method 处理环境 设置为 ajax
# ajax_func_name ajax分页跳转页面的javascript方法
# parameter    ajax_func_name后面的附带参数 默认为空
# now_page 不到当前页面所以只有你传入
$params=array(
			'total_rows'=>100,
			'method'    =>'ajax',
			'ajax_func_name' =>'goToPage',
			'now_page'  =>1,
			#'parameter' =>"'jiong','username'",
);
$page=new Pager($params);
echo $page->show(1);
#<a href="javascript:void(0)" onclick="goToPage('7')">7</a>
#添加了parameter<a href="javascript:void(0)" onclick="goToPage('6','jiong','username')">6</a>

您可能感兴趣的文章

  • 在php中分别使用curl的post提交数据的方法和get获取网页数据的方法总结
  • PHP分析文件头信息判断上传文件的类型
  • PHP判断浏览器类型
  • php判断变量类型常用方法
  • php控制请求页面浏览器缓存
  • PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
  • PHP获取当前页面完整url地址函数,包括参数
  • 强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)

www.phpzy.comtrue/php/1878.htmlTechArticlePHP分页类分享 分享一个常用的php分页类。有三种表现形式,具体效果图如下: (1) (2) (3) 该php分页类的具体代码以及使用方法如下: /***PHP分页类 **show(2) 1 ... 62 63 64 65 66 67 68...

相关文章

相关频道:

PHP之友评论

今天推荐