Home  >  Article  >  Backend Development  >  PHP A complete paging class (with source code)_PHP tutorial

PHP A complete paging class (with source code)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:57:031096browse

It is much simpler to implement paging in php than in asp. Our core is to directly obtain the current page and then determine the size of each page and then use limit in the database to implement paging query. Let me introduce the paging class in detail. implement the program.


If it is an ajax call:

//$total, total number (int); $size, number displayed per page (int); $page, current page (int), $url, link (string); ajax, js function name;

$page = new Page(array('total'=>$total,'perpage'=>$size,'nowindex'=>$page,'url' => $url,'ajax' => 'videoGoToPage'));

//The variable $page_html is the paging html, parameter 4 is the fourth paging display style
$page_html = $page->show(4);
//Then add the jQuery package and js code to the page:

function videoGoToPage(u)
{
if(!u)
{
return false;
}
$.ajax({
type: “POST”,
url: “” + u,
data: “”,
success: function(msg){
//alert( “Data Saved: ” + msg );
$(“#tanglei”).html(msg);
}
});
}

If it is not an ajax call:

//Just remove the 'ajax' item in the array

$page = new Page(array('total'=>$total,'perpage'=>$size,'nowindex'=>$page,'url' => $url));

$page_html = $page->show(4);

Note: For url, because I use pseudo-static, for example, my page link is search-1.html which means the first page, search-2.html which is the second page, then my $url variable

should be written as $url = 'search-';

The paging class will automatically complete the following "number of pages.html". Here you can modify the paging class according to your own needs.

Let’s share page.class.php with everyone

The code is as follows Copy code

/**
* filename: ext_page.class.php
* @package:phpbean
* @author :feifengxlq
* @copyright :Copyright 2006 feifengxlq
* @license:version 2.0
* @create:2006-5-31
* @modify:2006-6-1
* @modify:feifengxlq 2006-11-4
* description: Super powerful paging class, four paging modes, the default paging style is similar to Baidu and Google.
* 2.0 added features: supports custom styles, custom styles, supports both PHP4 and PHP5,
* to see detail,please visit http://www.bKjia.c0m * example:
* Mode four paging modes:
​ require_once('../libs/classes/page.class.php');
$page=new page(array('total'=>1000,'perpage'=>20));
echo 'mode:1
'.$page->show();
echo '


mode:2
'.$page->show(2);
echo '
mode:3
'.$page->show(3);
echo '
mode:4
'.$page->show(4);
Turn on AJAX:
$ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test'));
echo 'mode:1
'.$ajaxpage->show();
Use inherited custom paging display mode:
Demo:[url=http://www.phpobject.net/blog]http://www.phpobject.net/blog[/url]
​*/
class Page
{
/**
  * config ,public
 */
var $page_name="p";//page tag, used to control the url page. For example, PB_page
in xxx.php?PB_page=2 var $next_page='>';//Next page
var $pre_page='<';//Previous page
var $first_page='First';//Homepage
var $last_page='Last';//Last page
var $pre_bar='<<';//Previous paging bar
var $next_bar='>>';//Next paging bar
var $format_left='';
var $format_right='';
var $is_ajax=false;//Whether AJAX paging mode is supported

/**
  * private
  *
 */
var $pagebarnum=10;//Control the number of record bars.
var $totalpage=0;//Total number of pages
var $ajax_action_name='';//AJAX action name
var $nowindex=1;//Current page
var $url="";//url address header
var $offset=0;

 /**
  * constructor构造函数
  *
  * @param array $array['total'],$array['perpage'],$array['nowindex'],$array['url'],$array['ajax']...
 */
 function 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->offset=($this->nowindex-1)*$perpage;
  if(!empty($array['ajax']))$this->open_ajax($array['ajax']);//打开AJAX模式
 }
 /**
* Set the value of the specified variable name in the class. If the change does not belong to this class, an exception will be thrown
*
* @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!");
  }

 }
 /**
* Turn on reverse AJAX mode
*
* @param string $action Default ajax triggered action.
​*/
 function open_ajax($action)
 {
  $this->is_ajax=true;
  $this->ajax_action_name=$action;
 }
 /**
* Get the code to display "next page"
*
* @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 ''.$this->next_page.'';
 }

 /**
* Get the code to display "previous page"
*
* @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 ''.$this->pre_page.'';
 }

 /**
* Get the code to display "Home Page"
*
* @return string
​*/
 function first_page($style='')
 {
  if($this->nowindex==1){
      return ''.$this->first_page.'';
  }
  return $this->_get_link($this->_get_url(1),$this->first_page,$style);
 }

 /**
* Get the code to display the "last page"
*
* @return string
​*/
 function last_page($style='')
 {
  if($this->nowindex==$this->totalpage){
      return ''.$this->last_page.'';
  }
  return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);
 }

 function nowbar($style='',$nowindex_style='c')
 {
  $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(''.$i.'');
   }else{
    break;
   }
   $return.="n";
  }
  unset($begin);
  return $return;
 }
 /**
  * 获取显示跳转按钮的代码
  *
  * @return string
  */
 function select()
 {
   $return='';
  return $return;
 }

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

 /**
  * 控制分页显示风格(你可以增加相应的风格)
  *
  * @param int $mode
  * @return string
  */
 function show($mode=1)
 {
  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='>';
    $this->pre_page='<';
    $this->first_page='<<';
    $this->last_page='>>';
    return $this->first_page().$this->pre_page().$this->nowbar().$this->next_page().$this->last_page();
    break;
   case '5':
    return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this->next_bar();
    break;
  }

 }
/*----------------private function (私有方法)-----------------------------------------------------------*/
 /**
* Set url header address
* @param: String $url
* @return boolean
​*/
 function _set_url($url="")
 {
  if(!empty($url)){
      //手动设置
   $this->url=$url;
  }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
 }

 /**
* Set current page
*
​*/
 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);
  }
 }

 /**
* Return the address value for the specified page
*
* @param int $pageno
* @return string $url
​*/
 function _get_url($pageno=1)
 {
  return $this->url.$pageno . '.html';
 }

 /**
* Get pagination display text, for example, by default _get_text('1') will return [1]
*
* @param String $str
* @return string $url
​*/
 function _get_text($str)
 {
  return $this->format_left.$str.$this->format_right;
 }

 /**
* Get link address
​*/
 function _get_link($url,$text,$style=''){
  $style=(empty($style))?'':'class="'.$style.'"';
  if($this->is_ajax){
      //如果是使用AJAX模式
   return ''.$text.'';
  }else{
   return ''.$text.'';
  }
 }
 /**
* Error handling
​*/
 function error($function,$errormsg)
 {
     die('Error in file '.__FILE__.' ,Function '.$function.'() :'.$errormsg);
 }
}
?>

php分页类源码下载包:http://file.bKjia.c0m/download/2013/06/08/pageClass.rar

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631555.htmlTechArticle在php中要实现分页比起asp中要简单很多了,我们核心就是直接获取当前页面然后判断每页多少再到数据库中利用limit就可以实现分页查询了,...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn