首頁 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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++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 教程
1317
25
PHP教程
1268
29
C# 教程
1248
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