PHP分页类分享

分享一个常用的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"]<=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  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.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);
   #<a href="www.Alixixi.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)" >7</a>
#添加了parameter<a href="javascript:void(0)" >6</a>

您可能感兴趣的文章

  • 在php中分别使用curl的post提交数据的方法和get获取网页数据的方法总结
  • PHP分析文件头信息判断上传文件的类型
  • php判断变量类型常用方法
  • PHP 利用 Curl Functions 实现多线程抓取网页和下载文件
  • php控制请求页面浏览器缓存
  • PHP判断浏览器类型
  • PHP Curl批量多线程打开网址的类
  • php通过socket获取网页内容的简单示例

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ajax分页
, return
, function
, this
, pages
, page
, parameter
, protected
html5_ajax
php 分页类、php中分页类完整代码、php完美分页类、php搜索分页类、细说php分页类,以便于您获取更多的相关知识。

时间: 2024-11-03 13:21:49

PHP分页类分享的相关文章

今天写的分页类......分享

分页 由于是上班时候写的,所以如果全部由部贴出来恐怕对不起公司,所以我把其中的表单跳转删去了.别见怪哦... 格式写法是比较标准的了 PHP代码:--------------------------------------------------------------------------------/**********| +---------------------------------------------------| CLASS NAME: PageBar| +--------

php分页原理 分页代码 分页类制作教程

分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一.对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解. 一.分页原理: 所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数: 每页多少条记录($PageSize)?        当前是第几页($CurrentPageID)? 现在只要再给我一个结果集,我就可以显示某段特定的结果出

分享一个取自HoverTree项目的.NET分页类_实用技巧

这是一个实际应用中的类,代码出自HoverTree项目,适用与.NET平台,一般在ASP.NET中使用.效果可以在HoverTree官网看到. /* 在HoverTree CMS项目中使用 * 可以用于ASP.NET分页 */ namespace HoverTree.Framework.WebUI { public class KeleyiPager { public static string BuildPageIndex(int pageIndex, int totalPageCount)

ThinkPHP使用心得分享-分页类Page的用法_php技巧

ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page类: 复制代码 代码如下: import('ORG.Util.Page'); //Page类的引入$db = M('abc');//实例化数据表abc$where = array('id'=>'2';);//条件语句$where,例表中字段id的值为2$count = $db->where($where)->count();//获取符合

nodejs分页类代码分享_node.js

分页类,我放在 plugin/Paginate.js 复制代码 代码如下: /** * 分页插件类(缺少每页的显示数,listrows明天写) * @param page {Number} 当前页 * @param pagesize {Number} 每页记录数 * @param total {Number} 总记录数 * @constructor */function Paginate(page, pagesize, total){    if(!page || page <1){      

创建一个ASP通用分页类

创建|分页 转自"蓝色理想" http://www.blueidea.com/tech/program/2004/1989.asp.ASP分页一直是一个众说纷坛的话题,而且也没有一个太有效的方法.今天在CSDN的BLOG里看到了这个ASP分页类,(http://blog.csdn.net/xiangbo520/archive/2004/09/22/113539.aspx),只是提供了源码,而且源码中部分标签已被作为HTML显示了,想复制下来也不太容易,所有到蓝色理想找到了一篇全面一点的

创建一个ASP分页类(一)文章部分

创建|分页 创建一个ASP通用分页类 平波 从开始学习到使用ASP到现在也写了不少程序了,最令人头痛的是写数据分页,每次都是由于几个变量名或几个参数的不同,因而需要每次都写哪一段冗长而又繁杂的分页代码,代码长了使得程序的可读性变差,容易出差,调试半天也找不出错在哪里,所以慢慢的我开始使用一些网上的提供的分页函数或分页类.的确省事不少,但是通常的函数和类的做法都是就数据显示部分也封装了起来,每次为了达到自己需要的显求效果要去改动函数或者类的本身,所以使用起来也不是怎么方便,自己写的分页改起来已经够

一个通用的JSP分页类,具有显示多组页码功能

最近几天学习jsp觉得很好,写了个分页类,给大家分享一下,同时也请高手指点. 第一部分:db.MysqlConn 数据库链接类 /********************************************************** 路径:zon.db.MysqlConn 文件:MysqlConn.java 用途:数据库连接 package db; import java.sql.*; import javax.xml.parsers.*; import org.w3c.dom.*

php简单分页类实现方法

 这篇文章主要介绍了php简单分页类实现方法,实例分析了php分页类的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php简单分页类实现方法.分享给大家供大家参考.具体如下:   代码如下: class PageModel { /** * 获取分页数组 * @param unknown $page 当前页面数 * @param unknown $goodsCount 商品总数 * @param unknown $pageLength 每个页面展示页面数 */ pub