仿Aspnetpager的一个PHP分页类代码 附源码下载
前端之家收集整理的这篇文章主要介绍了
仿Aspnetpager的一个PHP分页类代码 附源码下载,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本逻辑思路和.net的一样,就是将通过实体类来进行配置换成了通过数组进行配置,逻辑比较简单,根据条件判断拼接分页html。
有以下几个简单的功能:
1:
支持相关按钮的
显示与否配置
2:
支持每页数目,文本
名称,html
标签类
名称的自由配置
3:
支持url重写过的
页面(需自己在配置数组中
添加重写规则)
简单吧,还是直接上代码:
核心
代码:pager.class.
PHP <div class="codetitle">
<a style="CURSOR: pointer" data="89957" class="copybut" id="copybut89957" onclick="doCopy('code89957')"> 代码如下: <div class="codebody" id="code89957">
<?
PHP class pager{
//
分页的参数配置
private $config=array(
//
首页按钮的文本
文字 "first_btn_text"=>"
首页",
//
上一页按钮的文本
文字,
"pre_btn_text"=>"
上一页",
//
下一页的文本
文字 "next_btn_text"=>"
下一页",
//最后一页的文本
文字,
"last_btn_text"=>"末页",
//总记录数
必需
"record_count"=>0,
//每页分页尺寸
"pager_size"=>10,
//当前页码 必需
"pager_index"=>1,
//每页
显示的最大
数量按钮
"max_show_page_size"=>10,
//
页码在浏览器中传值的
名称 默认为page
"querystring_name"=>"page",
//URL是否重写 默认为flase
"enable_urlrewriting"=>false,
//url重写规则 例如page/{page} 其中{page}就是代表页数
"urlrewrite_pattern"=>"",
//
分页容器的css
名称 "classname"=>"paginator",
//当前页按钮的class
名称 "current_btn_class"=>"cpb",
//
分页文字描述span
标签的css
"span_text_class"=>"stc",
/
跳转的详细文本
totle代表总页数,
size代表每页数目
goto代表要
跳转的输入框
record代表总记录数
index代表当前的
页码 /
"jump_info_text"=>"共{totle}页,每页{size}条记录,跳转到{goto}页",
//跳转按钮的文本
"jump_btn_text"=>"确定",
//是否显示跳转
"show_jump"=>false,
//是否展示前面的按钮 首页&上一页
"show_front_btn"=>true,
//是否展示后面的按钮 下一页&末页
"show_last_btn"=>true
);
/ 类的构造函数
$config:该
分页类的配置
/
public function __construct($config)
{
$this->init_config($config);
}
function __destruct()
{
unset($this->config);
}
/ 构造分页主函数
/
public function builder_pager()
{
//
分页的字符串
$pager_arr=array();
//每页的尺寸
$pager_size=$this->config["pager_size"];
//得到一共的
分页数目
$pager_num=$this->config["record_count"]%$pager_size==0?$this->config["record_count"]/$pager_size:floor($this->config["record_count"]/$pager_size)+1;
//当前的
页码序号 如果是0,则置为1
$pager_index=round($this->config["pager_index"])==0?1:round($this->config["pager_index"]);
//如果当前的
页码大于等于最后一页,则当前的
页码置为最后一页
$pager_index=$pager_index>=$pager_num?$pager_num:$pager_index;
//
下一页的
页码 $pager_next=$pager_index>=$pager_num?$pager_num:($pager_index+1);
//
获取需要
跳转 的url
$url=$this->get_url();
//
添加开头的div
$classname=$this->config["classname"];
$pager_arr[]="<div class=\"$classname\">\n";
//
添加前面两个按钮的html
if($this->config["show_front_btn"])
{
//如果当前的
页码为1 则front这两个按钮则会被禁用
$attr=$pager_index==1?"disabled=disabled":"";
$pager_arr[]=$this->get_a_html(self::format_url($url,1),$this->config["first_btn_text"],$attr);
$pager_arr[]=$this->get_a_html(self::format_url($url,$pager_index-1),$this->config["pre_btn_text"],$attr);
}
//当前
显示页码的起始 1~10 1 11~20 11
$current_pager_start=$pager_index%$pager_size==0?($pager_index/$pager_size-1)
$pager_size+1:floor($pager_index/$pager_size)$pager_size+1;
//当前
显示页码的结束
$current_pager_end=($current_pager_start+$pager_size-1)>=$pager_num?$pager_num:($current_pager_start+$pager_size-1);
//
添加跳转到上一层的html
if($pager_index>$pager_size)
{
$pager_arr[]=$this->get_a_html(self::format_url($url,$current_pager_start-1),"...");
}
//主体
页码部分
for($i=$current_pager_start;$i<=$current_pager_end;$i++)
{
if($i!=$pager_index)
{
$pager_arr[]=$this->get_a_html(self::format_url($url,$i),$i);
}else{
//如果这个是当前页
$pager_arr[]=$this->get_span_html($i,$this->config["current_btn_class"]);
}
}
//
添加下一层的html
if($pager_index<=($pager_num-$pager_num%$pager_size))
{
$pager_arr[]=$this->get_a_html(self::format_url($url,$current_pager_end+1),"...");
}
//
添加后面两个按钮的html
if($this->config["show_last_btn"])
{
//如果当前的
页码为最后一页 则last这两个按钮则会被禁用
$attr=$pager_index>=$pager_num?"disabled=disabled":"";
$pager_arr[]=$this->get_a_html(self::format_url($url,$pager_next),$this->config["next_btn_text"],$pager_num),$this->config["last_btn_text"],$attr);
}
//
添加跳转的html
if($this->config["show_jump"])
{
$patterns=array("/{totle}/","/{size}/","/{goto}/","/{record}/","/{index}/",);
$replacements=array(
$pager_num,
$pager_size,
"<input type=\"input\" id=\"jumpNum\" style=\"width:20px;\" name=\"jump\" value=\"".$pager_next."\" />\n",
$this->config["record_count"],
$this->config["pager_index"]
);
//替换特定的
标签组成
跳转 $pager_arr[]=preg_replace($patterns,$replacements,$this->config["jump_info_text"]);
$btn_text=$this->config['jump_btn_text'];
$pager_arr[]="<a href=\"javascript:void(0);\" style=\"float:none;\" onclick=\"javascript:jump();\">".$this->config['jump_btn_text']."\n";
$pager_arr[]=$this->get_jumpscript($url);
}
$pager_arr[]="
return "<span class=\"" .$classname. "\">$num\n";
)\}/',create_function('$match','$args = '.var_export($args,true).'; return isset($args[$match[1]]) ? $args[$match[1]] : $match[0];'),$str);