PHP ajax 分页类代码

   2015-11-18 0
核心提示:不错的ajax分页类
PHP ajax 分页类代码
<" alt="PHP ajax 分页类代码" />var $next_page='>';//下一页
var $pre_page='<';//上一页
var $first_page='First';//首页
var $last_page='Last';//尾页
var $pre_bar='<<';//上一分页条
var $next_bar='>>';//下一分页条
var $format_left='';
var $format_right='';
var $is_ajax=false;//是否支持AJAX分页模式
var $next_ten_page=">>>";
var $per_ten_page="<<<";

/**
* private
*
*/
var $pagebarnum=10;//控制记录条的个数。
var $totalpage=0;//总页数
var $ajax_action_name='';//AJAX动作名
var $nowindex=1;//当前页
var $url="";//url地址头
var $offset=0;
var $total='';

/**
* constructor构造函数
*
* @param array $array['total'],$array['perpage'],$array['nowindex'],$array['url'],$array['ajax']...
*/
function Zend_Page($array)
{
if(is_array($array)){
if(!array_key_exists('total',$array))$this->error(__FUNCTION__,'need a param of total');
$total=intval($array['total']);
$perpage=(array_key_exists('perpage',$array))?intval($array['perpage']):10;
$nowindex=(array_key_exists('nowindex',$array))?intval($array['nowindex']):'';
$url=(array_key_exists('url',$array))?$array['url']:'';
}else{
$total=$array;
$perpage=10;
$nowindex='';
$url='';
}
if((!is_int($total))||($total<0))$this->error(__FUNCTION__,$total.' is not a positive integer!');
if((!is_int($perpage))||($perpage<=0))$this->error(__FUNCTION__,$perpage.' is not a positive integer!');
if(!empty($array['page_name']))$this->set('page_name',$array['page_name']);//设置pagename
$this->_set_nowindex($nowindex);//设置当前页
$this->_set_url($url);//设置链接地址
$this->totalpage=ceil($total/$perpage);
$this->total=$total;
$this->offset=($this->nowindex-1)*$perpage;
if(!empty($array['ajax']))$this->open_ajax($array['ajax']);//打开AJAX模式
}
/**
* 设定类中指定变量名的值,如果改变量不属于这个类,将throw一个exception
*
* @param string $var
* @param string $value
*/
function set($var,$value)
{
if(in_array($var,get_object_vars($this)))
$this->$var=$value;
else {
$this->error(__FUNCTION__,$var." does not belong to PB_Page!");
}

}
/**
* 打开倒AJAX模式
*
* @param string $action 默认ajax触发的动作。
*/
function open_ajax($action)
{
$this->is_ajax=true;
$this->ajax_action_name=$action;
}
/**
* 获取显示"下一页"的代码
*
* @param string $style
* @return string
*/
function next_page($style='')
{
if($this->nowindex<$this->totalpage){
return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style);
}
return '<span class="'.$style.'">'.$this->next_page.'</span>';
}

/**
* 获取显示“上一页”的代码
*
* @param string $style
* @return string
*/
function pre_page($style='')
{
if($this->nowindex>1){
return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style);
}
return '<span class="'.$style.'">'.$this->pre_page.'</span>';
}

/**
* 获取显示“上十页”的代码
*
* @param string $style
* @return string
*/
function pre_ten_page($style='')
{
if(intval($this->nowindex/10)+1>1){
return $this->_get_link($this->_get_url(intval($this->nowindex/10)*10-5),$this->pre_ten_page,$style);
}
return '<span class="'.$style.'">'.$this->pre_ten_page.'</span>';
}

/**
* 获取显示"下十页"的代码
*
* @param string $style
* @return string
*/
function next_ten_page($style='')
{
if(intval($this->nowindex/10) <intval($this->totalpage/10)){
return $this->_get_link($this->_get_url((intval($this->nowindex/10)+1)*10+5),$this->next_ten_page,$style);
}
return '<span class="'.$style.'">'.$this->next_ten_page.'</span>';
}

/**
* 获取显示“首页”的代码
*
* @return string
*/
function first_page($style='')
{
if($this->nowindex==1){
return '<span class="'.$style.'">'.$this->first_page.'</span>';
}
return $this->_get_link($this->_get_url(1),$this->first_page,$style);
}

/**
* 获取显示“尾页”的代码
*
* @return string
*/
function last_page($style='')
{
if($this->nowindex==$this->totalpage){
return '<span class="'.$style.'">'.$this->last_page.'</span>';
}
return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);
}

function nowbar($style='',$nowindex_style='')
{
$plus=ceil($this->pagebarnum/2);
if($this->pagebarnum-$plus+$this->nowindex>$this->totalpage)$plus=($this->pagebarnum-$this->totalpage+$this->nowindex);
$begin=$this->nowindex-$plus+1;
$begin=($begin>=1)?$begin:1;
$return='';
for($i=$begin;$i<$begin+$this->pagebarnum;$i++)
{
if($i<=$this->totalpage){
if($i!=$this->nowindex)
$return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style));
else
$return.=$this->_get_text('<span class="'.$nowindex_style.'">'.$i.'</span>');
}else{
break;
}
$return.="\n";
}
unset($begin);
return $return;
}
/**
* 获取显示跳转按钮的代码
*
* @return string
*/
function select()
{
$return='<select name="PB_Page_Select" on change="location.replace(this.value)" >';
for($i=1;$i<=$this->totalpage;$i++)
{
if($i==$this->nowindex){
$return.='<option value='.$this->_get_url($i).' selected>'.$i.'</option>';
}else{
$return.='<option value='.$this->_get_url($i).'>'.$i.'</option>';
}
}
unset($i);
$return.='</select>';
return $return;
}

/**
* 获取mysql 语句中limit需要的值
*
* @return string
*/
function offset()
{
return $this->offset;
}

/**
* 控制分页显示风格(你可以增加相应的风格)
*
* @param int $mode
* @return string
*/
function show($mode=1,$url='')
{
switch ($mode)
{
case '1':
$this->next_page='下一页';
$this->pre_page='上一页';
return $this->pre_page().$this->nowbar().$this->next_page().'第'.$this->select().'页';
break;
case '2':
$this->next_page='下一页';
$this->pre_page='上一页';
$this->first_page='首页';
$this->last_page='尾页';
return $this->first_page().$this->pre_page().'[第'.$this->nowindex.'页]'.$this->next_page().$this->last_page().'第'.$this->select().'页';
break;
case '3':
$this->next_page='下一页';
$this->pre_page='上一页';
$this->first_page='首页';
$this->last_page='尾页';
return $this->first_page().$this->pre_page().$this->next_page().$this->last_page();
break;
case '4':
$this->next_page='next';
$this->pre_page='last';
return $this->pre_page().$this->nowbar().$this->next_page();
break;
case '5':
return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this->next_bar();
break;
case '6':
//启用了“上一页”,“下一页”,“最后一页”。可根据情况启用“第一页”。
//$this->first_page='<img src="'.HOSTPATH.'images/propageup.jpg" width="64" height="13" >';
$this->pre_page='<img src="'.HOSTPATH.'images/propageup.jpg" style="width:58px; height:18px;">';
$this->next_page='<img src="'.HOSTPATH.'images/propagedown.jpg" style="width:58px; height:18px;">';
$this->last_page='最后一页';
//return "<td width=39 align='center'>".$this->select()."</td>"."<td><span style='color:#666666'>页</span></td>"."<td width=72 align=right>".$this->first_page()."</td>"."<td width=72 align=right>".$this->pre_page()."</td>"."<td width=72 align=right>".$this->next_page()."</td>"."<td width=72 align=right>".$this->last_page()."</td>";
return "<td align='right'>共有[".$this->total."]件商品    ".$this->nowindex."/".$this->totalpage."页</td>"."<td width=145>".$this->pre_page()."  ".$this->next_page()."</td>"."<td width=145>".$this->last_page()."  ".$this->select()."  页  ";
break;
case '7':
$this->next_page='<img src="'.HOSTPATH.'images/arrpagedown.jpg"/>';
$this->pre_page='<img src="'.HOSTPATH.'images/arrpageup.jpg"/>';
$this->first_page='<img src="'.HOSTPATH.'images/arrhome.jpg"/>';
$this->last_page='<img src="'.HOSTPATH.'images/arrend.jpg"/>';
if($this->totalpage==0)
{$this->nowindex=0;}
return $this->first_page()."  ".$this->pre_page()."  ".$this->next_page()."  ".$this->last_page()."  ".$this->select();
break;
case '8':
//启用了“上一页”,“下一页”,“最后一页”。可根据情况启用“第一页”。
//$this->first_page='<img src="'.HOSTPATH.'images/propageup.jpg" width="64" height="13" >';
$this->pre_page='<img src="'.HOSTPATH.'images/propageup.jpg" style="width:58px; height:18px;">';
$this->next_page='<img src="'.HOSTPATH.'images/propagedown.jpg" style="width:58px; height:18px;">';
$this->last_page='最后一页';
if($this->totalpage==0)
{$this->nowindex=0;}
//return "<td width=39 align='center'>".$this->select()."</td>"."<td><span style='color:#666666'>页</span></td>"."<td width=72 align=right>".$this->first_page()."</td>"."<td width=72 align=right>".$this->pre_page()."</td>"."<td width=72 align=right>".$this->next_page()."</td>"."<td width=72 align=right>".$this->last_page()."</td>";
return "<td align='right'>共有[".$this->total."]条信息    ".$this->nowindex."/".$this->totalpage."页</td>"."<td width=145>".$this->pre_page()."  ".$this->next_page()."</td>"."<td width=145>".$this->last_page()."  ".$this->select()."  页  ";
break;
}

}
/*----------------private function (私有方法)-----------------------------------------------------------*/
/**
* 设置url头地址
* @param: String $url
* @return boolean
*/
function _set_url($url="")
{
if(!empty($url)){
//手动设置
$this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."=";
}else{
//自动获取
if(empty($_SERVER['QUERY_STRING'])){
//不存在QUERY_STRING时
$this->url=$_SERVER['REQUEST_URI']."?".$this->page_name."=";
}else{
//
if(stristr($_SERVER['QUERY_STRING'],$this->page_name.'=')){
//地址存在页面参数
$this->url=str_replace($this->page_name.'='.$this->nowindex,'',$_SERVER['REQUEST_URI']);
$last=$this->url[strlen($this->url)-1];
if($last=='?'||$last=='&'){
$this->url.=$this->page_name."=";
}else{
$this->url.='&'.$this->page_name."=";
}
}else{
//
$this->url=$_SERVER['REQUEST_URI'].'&'.$this->page_name.'=';
}//end if
}//end if
}//end if
}

/**
* 设置当前页面
*
*/
function _set_nowindex($nowindex)
{
if(empty($nowindex)){
//系统获取

if(isset($_GET[$this->page_name])){
$this->nowindex=intval($_GET[$this->page_name]);
}
}else{
//手动设置
$this->nowindex=intval($nowindex);
}
}

/**
* 为指定的页面返回地址值
*
* @param int $pageno
* @return string $url
*/
function _get_url($pageno=1)
{
return $this->url.$pageno;
}

/**
* 获取分页显示文字,比如说默认情况下_get_text('<a href="">1</a>')将返回[<a href="">1</a>]
*
* @param String $str
* @return string $url
*/
function _get_text($str)
{
return $this->format_left.$str.$this->format_right;
}

/**
* 获取链接地址
*/
function _get_link($url,$text,$style=''){
$style=(empty($style))?'':'class="'.$style.'"';
if($this->is_ajax){
//如果是使用AJAX模式
return '<a '.$style.' href="javascript:'.$this->ajax_action_name.'(\''.$url.'\')">'.$text.'</a>';
}else{
return '<a '.$style.' href="'.$url.'">'.$text.'</a>';
}
}
/**
* 出错处理方式
*/
function error($function,$errormsg)
{
die('Error in file <b>'.__FILE__.'</b> ,Function <b>'.$function.'()</b> :'.$errormsg);
}
}
?>
 
标签: PHP 分页类 ajax
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • php-fpm进程管理的三种模式 phpfpm子进程
    php-fpm进程管理的三种模式 phpfpm子进程
    php-fpm解读-进程管理的三种模式—程序媛大丽标明转载以示尊重 感谢原作者的分享。php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worke
    03-08
  • nginx和php-fpm 是使用 tcp socket 还是 unix s
    tcp socket允许通过网络进程之间的通信,也可以通过loopback进行本地进程之间通信。unix socket允许在本地运行的进程之间进行通信。分析从上面的图片可以看,unix socket减少了不必要的tcp开销,而tcp需要经过loopback,还要申请临时端口和tcp相关资源。但是
    03-08
  • [PHP8] 我参加了PHP8工程师认证初学者考试beta考试
    [PHP8] 我参加了PHP8工程师认证初学者考试beta
    前几天,2022/08/05,PHP工程师认证机构PHP8 技术员认证初级考试宣布实施考试将于 2023 年春季开始。和 beta 测试完成于 2022/09/11所以我收到了。一般社团法人BOSS-CON JAPAN(代表理事:Tadashi Yoshimasa,地点:东京都世田谷区,以下简称“BOSS-CON JAPAN
    03-08
  • 将 PHP Insights 放入旧版 PJ 不是很好吗?谈论
    将 PHP Insights 放入旧版 PJ 不是很好吗?谈论
    介绍在最近的PHP系统开发中,感觉故事在理所当然包含静态分析工具的前提下进行。我的周围现有代码很脏,我很久以前安装了工具,但几乎没有检查已经观察到许多这样的案例。 (这是小说。而不是像 0 或 100 这样不允许单行错误的静态分析,一点一点,逐渐我想介
    03-08
  • PHP基于elasticsearch全文搜索引擎的开发 php使
    1.概述:全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接
    02-09
  • php视图操作
    一、视图的基本介绍         视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。        使用视图需要MySQL5及以后的版本支持。        下面是视图的一些常见应用:        重用SQL语句;        简化复杂的S
    02-09
  • php中图像处理的常用函数 php图形图像处理技术
    php中图像处理的常用函数 php图形图像处理技术
    1.imagecreate()函数imagecreate()函数是基于一个调色板的画布。?php $im = imagecreate(200,80);                //创建一个宽200,高80的画布。$white = imagecolorallocate($im,225,35,180);     //设置画布的背景颜色imagegif($im);
    02-09
  • PHP安全之webshell和后门检测
    PHP安全之webshell和后门检测
    基于PHP的应用面临着各种各样的攻击:XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点。攻击者可以利用它盗取用户信息。你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入)来防范XSS攻击SQL注入:这是PHP应用中,数据库层的易受攻击点。防范
    02-09
  • php使用时间戳保存时间的意义 PHP获取时间戳
    时间戳记录的是格林尼治时间,使用date格式化的时候会根据你程序设置的不同时区显示不同的时间。如果使用具体时间,则还需要进行多一步转换。
    02-09
  • PHP 获取提交表单数据方法
    PHP $_GET 和 $_POST变量是用来获取表单中的信息的,比如用户输入的信息。PHP表单操作在我们处理HTML表单和PHP表单时,我们要记住的重要一点是:HTML页面中的任何一个表单元素都可以自动的用于PHP脚本:表单举例: htmlbodyform action="welcome.php" method
    02-09
点击排行