首页 php教程 PHP源码 AJAX模式下的分页

AJAX模式下的分页

May 25, 2016 pm 05:15 PM

AJAX模式下的分页

<?php
/**
演示
require_once(&#39;../libs/classes/page.class.php&#39;);
$page=new page(array(&#39;total&#39;=>1000,&#39;perpage&#39;=>20));
echo &#39;mode:1<br>&#39;.$page->show();
echo &#39;<hr>mode:2<br>&#39;.$page->show(2);
echo &#39;<hr>mode:3<br>&#39;.$page->show(3);
echo &#39;<hr>mode:4<br>&#39;.$page->show(4);
echo &#39;<hr>开始AJAX模式:&#39;;
$ajaxpage=new page(array(&#39;total&#39;=>1000,&#39;perpage&#39;=>20,&#39;ajax&#39;=>&#39;ajax_page&#39;,&#39;page_name&#39;=>&#39;test&#39;));
echo &#39;mode:1<br>&#39;.$ajaxpage->show();
*/
class minupage
{
/**
* config ,public
*/
var $page_name="p";//page标签,用来控制url页。比如说xxx.php?PB_page=2中的PB_page
var $next_page=&#39;>&#39;;//下一页
var $pre_page=&#39;<&#39;;//上一页
var $first_page=&#39;First&#39;;//首页
var $last_page=&#39;Last&#39;;//尾页
var $pre_bar=&#39;<<&#39;;//上一分页条
var $next_bar=&#39;>>&#39;;//下一分页条
var $format_left=&#39;[&#39;;
var $format_right=&#39;]&#39;;
var $is_ajax=false;//是否支持AJAX分页模式

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

/**
* constructor构造函数
*
* @param array $array[&#39;total&#39;],$array[&#39;perpage&#39;],$array[&#39;nowindex&#39;],$array[&#39;url&#39;],$array[&#39;ajax&#39;]...
*/
function minupage($array)
{
if(is_array($array)){
     if(!array_key_exists(&#39;total&#39;,$array))$this->error(__FUNCTION__,&#39;need a param of total&#39;);
     $total=intval($array[&#39;total&#39;]);
     $perpage=(array_key_exists(&#39;perpage&#39;,$array))?intval($array[&#39;perpage&#39;]):10;
     $nowindex=(array_key_exists(&#39;nowindex&#39;,$array))?intval($array[&#39;nowindex&#39;]):&#39;&#39;;
     $url=(array_key_exists(&#39;url&#39;,$array))?$array[&#39;url&#39;]:&#39;&#39;;
}else{
     $total=$array;
     $perpage=10;
     $nowindex=&#39;&#39;;
     $url=&#39;&#39;;
}
if((!is_int($total))||($total<0))$this->error(__FUNCTION__,$total.&#39; is not a positive integer!&#39;);
if((!is_int($perpage))||($perpage<=0))$this->error(__FUNCTION__,$perpage.&#39; is not a positive integer!&#39;);
if(!empty($array[&#39;page_name&#39;]))$this->set(&#39;page_name&#39;,$array[&#39;page_name&#39;]);//设置pagename
$this->_set_nowindex($nowindex);//设置当前页
$this->_set_url($url);//设置链接地址
$this->totalpage=ceil($total/$perpage);
$this->offset=($this->nowindex-1)*$perpage;
if(!empty($array[&#39;ajax&#39;]))$this->open_ajax($array[&#39;ajax&#39;]);//打开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=&#39;&#39;)
{
if($this->nowindex<$this->totalpage){
   return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style);
}
return &#39;<span class="&#39;.$style.&#39;">&#39;.$this->next_page.&#39;</span>&#39;;
}

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

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

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

function nowbar($style=&#39;&#39;,$nowindex_style=&#39;&#39;)
{
$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=&#39;&#39;;
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(&#39;<span class="&#39;.$nowindex_style.&#39;">&#39;.$i.&#39;</span>&#39;);
   }else{
    break;
   }
   $return.="\n";
}
unset($begin);
return $return;
}
/**
* 获取显示跳转按钮的代码
*
* @return string
*/
function select($url)
{
$return=&#39;<select name=";PB_Page_Select" >&#39;;
for($i=1;$i<=$this->totalpage;$i++)
{
   if($i==$this->nowindex){
    $return.=&#39;<option value=&#39;.$url.$i.&#39; selected>&#39;.$i.&#39;</option>&#39;;
   }else{
    $return.=&#39;<option value=&#39;.$url.$i.&#39;>&#39;.$i.&#39;</option>&#39;;
   }
}
unset($i);
$return.=&#39;</select>&#39;;
return $return;
}

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

/**
* 控制分页显示风格(你可以增加相应的风格)
*
* @param int $mode
* @return string
*/
function show($mode=1,$url=&#39;&#39;)
{
switch ($mode)
{
   case &#39;1&#39;:
    $this->next_page=&#39;下一页&#39;;
    $this->pre_page=&#39;上一页&#39;;
    return $this->pre_page().$this->nowbar().$this->next_page().&#39;第&#39;.$this->select($url).&#39;页&#39;;
    break;
   case &#39;2&#39;:
    $this->next_page=&#39;下一页&#39;;
    $this->pre_page=&#39;上一页&#39;;
    $this->first_page=&#39;首页&#39;;
    $this->last_page=&#39;尾页&#39;;
    return $this->first_page().$this->pre_page().&#39;[第&#39;.$this->nowindex.&#39; 页]&#39;.
    $this->next_page().$this->last_page().&#39;第 &#39;.$this->select($url).&#39;页&#39;;
    break;
   case &#39;3&#39;:
    $this->next_page=&#39;下一页&#39;;
    $this->pre_page=&#39;上一页&#39;;
    $this->first_page=&#39;首页&#39;;
    $this->last_page=&#39;尾页&#39;;
    return $this->first_page().$this->pre_page().$this->next_page().$this->last_page();
    break;
   case &#39;4&#39;:
    $this->next_page=&#39;下一页&#39;;
    $this->pre_page=&#39;上一页&#39;;
    return $this->pre_page().$this->nowbar().$this->next_page();
    break;
   case &#39;5&#39;:
    return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this->next_bar();
    break;
}

}
/*----------------private function (私有方法)-----------------------------------------------------------*/
/**
* 设置url头地址
* @param: String $url
* @return boolean
*/
function _set_url($url="")
{
if(!empty($url)){
      //手动设置
   $this->url=$url.((stristr($url,&#39;?&#39;))?&#39;&&#39;:&#39;?&#39;).$this->page_name."=";
}else{
      //自动获取
   if(empty($_SERVER[&#39;QUERY_STRING&#39;])){
       //不存在QUERY_STRING时
    $this->url=$_SERVER[&#39;REQUEST_URI&#39;]."?".$this->page_name."=";
   }else{
       //
    if(stristr($_SERVER[&#39;QUERY_STRING&#39;],$this->page_name.&#39;=&#39;)){
        //地址存在页面参数
     $this->url=str_replace($this->page_name.&#39;=&#39;.$this->nowindex,&#39;&#39;,$_SERVER[&#39;REQUEST_URI&#39;]);
     $last=$this->url[strlen($this->url)-1];
     if($last==&#39;?&#39;||$last==&#39;&&#39;){
         $this->url.=$this->page_name."=";
     }else{
         $this->url.=&#39;&&#39;.$this->page_name."=";
     }
    }else{
        //
     $this->url=$_SERVER[&#39;REQUEST_URI&#39;].&#39;&&#39;.$this->page_name.&#39;=&#39;;
    }//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(&#39;<a href="">1</a>&#39;)将返回[<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=&#39;&#39;){
$style=(empty($style))?&#39;&#39;:&#39;class="&#39;.$style.&#39;"&#39;;
if($this->is_ajax){
      //如果是使用AJAX模式
   return &#39;<a &#39;.$style.&#39; href="javascript:&#39;.$this->ajax_action_name.&#39;(\&#39;&#39;.$url.&#39;\&#39;)">&#39;.$text.&#39;</a>&#39;;
}else{
   return &#39;<a &#39;.$style.&#39; href="&#39;.$url.&#39;">&#39;.$text.&#39;</a>&#39;;
}
}
/**
   * 出错处理方式
*/
function error($function,$errormsg)
{
     die(&#39;Error in file <b>&#39;.__FILE__.&#39;</b> ,Function <b>&#39;.$function.&#39;()</b> :&#39;.$errormsg);
}
}
?>
登录后复制


                   

以上就是的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
微信的免打扰模式有什么作用 微信的免打扰模式有什么作用 Feb 23, 2024 pm 10:48 PM

微信勿扰模式什么意思如今,随着智能手机的普及和移动互联网的迅猛发展,社交媒体平台已经成为人们日常生活中不可或缺的一部分。而微信作为国内最流行的社交媒体平台之一,几乎每个人都有一个微信账号。我们可以通过微信与朋友、家人、同事进行实时沟通,分享生活中的点滴,了解彼此的近况。然而,在这个时代,我们也不可避免地面临着信息过载和隐私泄露的问题,特别是对于那些需要专注或

PHP 与 Ajax:构建一个自动完成建议引擎 PHP 与 Ajax:构建一个自动完成建议引擎 Jun 02, 2024 pm 08:39 PM

使用PHP和Ajax构建自动完成建议引擎:服务器端脚本:处理Ajax请求并返回建议(autocomplete.php)。客户端脚本:发送Ajax请求并显示建议(autocomplete.js)。实战案例:在HTML页面中包含脚本并指定search-input元素标识符。

请勿打扰模式在iPhone中不起作用:修复 请勿打扰模式在iPhone中不起作用:修复 Apr 24, 2024 pm 04:50 PM

即使在“请勿打扰”模式下接听电话也可能是一种非常烦人的体验。顾名思义,请勿打扰模式可关闭来自邮件、消息等的所有来电通知和警报。您可以按照这些解决方案集进行修复。修复1–启用对焦模式在手机上启用对焦模式。步骤1–从顶部向下滑动以访问控制中心。步骤2–接下来,在手机上启用“对焦模式”。专注模式可在手机上启用“请勿打扰”模式。它不会让您的手机上出现任何来电提醒。修复2–更改对焦模式设置如果对焦模式设置中存在一些问题,则应进行修复。步骤1–打开您的iPhone设置窗口。步骤2–接下来,打开“对焦”模式设

解决jQuery AJAX请求遇到403错误的方法 解决jQuery AJAX请求遇到403错误的方法 Feb 20, 2024 am 10:07 AM

标题:解决jQueryAJAX请求出现403错误的方法及代码示例403错误是指服务器禁止访问资源的请求,通常会导致出现这个错误的原因是请求缺少权限或者被服务器拒绝。在进行jQueryAJAX请求时,有时候会遇到这种情况,本文将介绍如何解决这个问题,并提供代码示例。解决方法:检查权限:首先要确保请求的URL地址是正确的,同时验证是否有足够的权限来访问该资

解决jQuery AJAX请求403错误的方法 解决jQuery AJAX请求403错误的方法 Feb 19, 2024 pm 05:55 PM

jQuery是一个流行的JavaScript库,用于简化客户端端的开发。而AJAX则是在不重新加载整个网页的情况下,通过发送异步请求和与服务器交互的技术。然而在使用jQuery进行AJAX请求时,有时会遇到403错误。403错误通常是服务器禁止访问的错误,可能是由于安全策略或权限问题导致的。在本文中,我们将讨论如何解决jQueryAJAX请求遭遇403错误

如何解决jQuery AJAX报错403的问题? 如何解决jQuery AJAX报错403的问题? Feb 23, 2024 pm 04:27 PM

如何解决jQueryAJAX报错403的问题?在开发网页应用程序时,经常会使用jQuery来发送异步请求。然而,有时候在使用jQueryAJAX时可能会遇到错误代码403,表示服务器禁止访问。这种情况通常是由服务器端的安全设置所导致的,但可以通过一些方法来解决这个问题。本文将介绍如何解决jQueryAJAX报错403的问题,并提供具体的代码示例。一、使

如何使用Ajax从PHP方法中获取变量? 如何使用Ajax从PHP方法中获取变量? Mar 09, 2024 pm 05:36 PM

使用Ajax从PHP方法中获取变量是Web开发中常见的场景,通过Ajax可以实现页面无需刷新即可动态获取数据。在本文中,将介绍如何使用Ajax从PHP方法中获取变量,并提供具体的代码示例。首先,我们需要编写一个PHP文件来处理Ajax请求,并返回所需的变量。下面是一个简单的PHP文件getData.php的示例代码:

MyBatis分页插件原理详解 MyBatis分页插件原理详解 Feb 22, 2024 pm 03:42 PM

MyBatis是一个优秀的持久层框架,它支持基于XML和注解的方式操作数据库,简单易用,同时也提供了丰富的插件机制。其中,分页插件是使用频率较高的插件之一。本文将深入探讨MyBatis分页插件的原理,并结合具体的代码示例进行说明。一、分页插件原理MyBatis本身并不提供原生的分页功能,但可以借助插件来实现分页查询。分页插件的原理主要是通过拦截MyBatis

See all articles