分享一个常用的php分页类。有三种表现形式,具体效果图如下:
(1)
立即学习“PHP免费学习笔记(深入)”;
类似媒体播放器jQuery分页插件是一款jPaginator插件,有点类似于媒体播放器的效果,带有数码翻页、前后翻页、首页最后一页,建议在支持css3或html5的浏览器下预览,效果会更佳。
(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 "".$text.""."";
break;
case "html" :
$url=str_replace("?",$page,$this->parameter);
return "".$text."";
break;
default :
return "_get_url($page)."">".$text."";
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.="$i";
}else{
if($this->now_page-$i>=4&&$i!=1){
$return.="...";
$i=$this->now_page-3;
}else{
if($i>=$this->now_page+5&&$i!=$this->total_pages){
$return.="...";
$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.="$i";
}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.="list_rows."" id="pageSize" size="3"> ";
$return.=$this->first_page();
$return.=$this->up_page();
$return.=$this->down_page();
$return.=$this->last_page();
$return.="";
return $return;
}
}
类使用示例:
###处理html静态化页面分页的情况### # method 处理环境 设置为 html # parameter 为静态页面参数 www.Alixixi.com/20-0-0-0-40-?.html 注意问号 # ?问号的位置会自动替换为去向页码 # now_page 当前页面(静态页面获取不到当前页面所以只有你传入) $params=array( "total_rows"=>100,#(必须) "method" =>"html",#(必须) "parameter" =>"www.Alixixi.com/20-0-0-0-40-?.html", #(必须) "now_page" =>$_GET["p"], #(必须) "list_rows" =>10,#(可选) 默认为15 ); $page=new Pager($params); echo $page->show(1); #2 ###处理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); #7 #添加了parameter6
您可能感兴趣的文章
- 在php中分别使用curl的post提交数据的方法和get获取网页数据的方法总结
- PHP分析文件头信息判断上传文件的类型
- php判断变量类型常用方法
- PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
- php控制请求页面浏览器缓存
- PHP判断浏览器类型
- PHP Curl批量多线程打开网址的类
- php通过socket获取网页内容的简单示例










