PHP A complete paging class (with source code)_PHP tutorial
WBOYOriginal
2016-07-13 16:57:031119browse
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:
$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);
}
/**
* 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);
}
}
?>
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