PHP分页类分享
程序员文章站
2022-06-03 21:18:39
...
分享一个常用的php分页类。有三种表现形式,具体效果图如下:
(1)
(2)
(3)
该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"]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_pagenow_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_pagetotal_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_pagetotal_pages){ return $this->_get_link($this->now_page+1,$name); } return ""; } /** *分页样式输出 * *@param * $param *@return string */ public function show($param=1){ if($this->total_rows$className(); } return ""; } protected function show_2(){ if($this->total_pages!=1){ $return=""; $return.=$this->up_page("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$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获取网页内容的简单示例