Code for an PHP paging class

  • 2020-05-07 19:18:19
  • OfStack

Here's the code:
PHP
 
<? 
/** 
* filename: ext_page.class.php 
* @package:phpbean 
* @author :feifengxlq<feifengxlq#gmail.com><http://www.phpobject.net/> 
* @copyright :Copyright 2006 feifengxlq 
* @license:version 2.0 
* @create:2006-5-31 
* @modify:2006-6-1 
* @modify:feifengxlq 2006-11-4 
* description:  Paging class, 4 Paging mode  
* 2.0 Added functionality: support for custom styles, custom styles, and support PHP4 and PHP5, 
* to see detail,please visit http://www.phpobject.net/blog/read.php? 
* example: 
*  model 4 Paging mode:  
require_once('../libs/classes/page.class.php'); 
$page=new page(array('total'=>1000,'perpage'=>20)); 
echo 'mode:1<br>'.$page->show(); 
echo '<hr>mode:2<br>'.$page->show(2); 
echo '<hr>mode:3<br>'.$page->show(3); 
echo '<hr>mode:4<br>'.$page->show(4); 
 open AJAX :  
$ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test')); 
echo 'mode:1<br>'.$ajaxpage->show(); 
 Inherited custom paging display mode:  
demo:http://www.phpobject.net/blog 
*/ 
class page 
{ 
/** 
* config ,public 
*/ 
var $page_name="PB_page";//page Tag for control url page  
var $next_page='>';// Under the 1 page  
var $pre_page='<';// on 1 page  
var $first_page='First';// Home page  
var $last_page='Last';// back  
var $pre_bar='<<';// on 1 Article page  
var $next_bar='>>';// Under the 1 Article page  
var $format_left='['; 
var $format_right=']'; 
var $is_ajax=false;// Whether to support AJAX Paging mode  

/** 
* private 
* 
*/ 
var $pagebarnum=10;// Controls the number of record bars.  
var $totalpage=0;// Total number of pages  
var $ajax_action_name='';//AJAX Action name  
var $nowindex=1;// The current page  
var $url="";//url Address of the first  
var $offset=0; 

/** 
* constructor The 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']);// Set up the pagename 
$this->_set_nowindex($nowindex);// Set the current page  
$this->_set_url($url);// Set the link address  
$this->totalpage=ceil($total/$perpage); 
$this->offset=($this->nowindex-1)*$perpage; 
if(!empty($array['ajax']))$this->open_ajax($array['ajax']);// Open the AJAX model  
} 
/** 
*  Sets the value of the specified variable name in the class throw1 a 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!"); 
} 

} 
/** 
*  Open the pour AJAX model  
* 
* @param string $action  The default ajax Trigger action.  
*/ 
function open_ajax($action) 
{ 
$this->is_ajax=true; 
$this->ajax_action_name=$action; 
} 
/** 
*  Access to display " Under the 1 page " The code of  
* 
* @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>'; 
} 

/** 
*  Get display "up 1 Page code  
* 
* @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>'; 
} 

/** 
*  Gets the code that displays the home page  
* 
* @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); 
} 

/** 
*  Gets the code that displays the last page  
* 
* @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; 
} 
/** 
*  Gets the code that shows the jump button  
* 
* @return string 
*/ 
function select() 
{ 
$return='<select name="PB_Page_Select">'; 
for($i=1;$i<=$this->totalpage;$i++) 
{ 
if($i==$this->nowindex){ 
$return.='<option value="'.$i.'" selected>'.$i.'</option>'; 
}else{ 
$return.='<option value="'.$i.'">'.$i.'</option>'; 
} 
} 
unset($i); 
$return.='</select>'; 
return $return; 
} 

/** 
*  To obtain mysql  In the statement limit Need the value of the  
* 
* @return string 
*/ 
function offset() 
{ 
return $this->offset; 
} 

/** 
*  Controls the paging display style  
* 
* @param int $mode 
* @return string 
*/ 
function show($mode=1) 
{ 
switch ($mode) 
{ 
case '1': 
$this->next_page=' Under the 1 page '; 
$this->pre_page=' on 1 page '; 
return $this->pre_page().$this->nowbar().$this->next_page().' The first '.$this->select().' page '; 
break; 
case '2': 
$this->next_page=' Under the 1 page '; 
$this->pre_page=' on 1 page '; 
$this->first_page=' Home page '; 
$this->last_page=' back '; 
return $this->first_page().$this->pre_page().'[ The first '.$this->nowindex.' page ]'.$this->next_page().$this->last_page().' The first '.$this->select().' page '; 
break; 
case '3': 
$this->next_page=' Under the 1 page '; 
$this->pre_page=' on 1 page '; 
$this->first_page=' Home page '; 
$this->last_page=' back '; 
return $this->first_page().$this->pre_page().$this->next_page().$this->last_page(); 
break; 
case '4': 
$this->next_page=' Under the 1 page '; 
$this->pre_page=' on 1 page '; 
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; 
} 

} 
/*----------------private function ( Private methods )-----------------------------------------------------------*/ 
/** 
*  Set up the url The first address  
* @param: String $url 
* @return boolean 
*/ 
function _set_url($url="") 
{ 
if(!empty($url)){ 
// manually  
$this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."="; 
}else{ 
// Automatic access to  
if(empty($_SERVER['QUERY_STRING'])){ 
// There is no QUERY_STRING when  
$this->url=$_SERVER['REQUEST_URI']."?".$this->page_name."="; 
}else{ 
// 
if(stristr($_SERVER['QUERY_STRING'],$this->page_name.'=')){ 
// The address exists as a page parameter  
$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 the current page  
* 
*/ 
function _set_nowindex($nowindex) 
{ 
if(empty($nowindex)){ 
// System access  

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

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

/** 
*  Gets the paging display text, for example, by default _get_text('<a href="">1</a>') Will return [<a href="">1</a>] 
* 
* @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){ 
// If you use AJAX model  
return '<a '.$style.' href="javascript:'.$this->ajax_action_name.'(\''.$url.'\')">'.$text.'</a>'; 
}else{ 
return '<a '.$style.' href="'.$url.'">'.$text.'</a>'; 
} 
} 
/** 
*  Error handling mode  
*/ 
function error($function,$errormsg) 
{ 
die('Error in file <b>'.__FILE__.'</b> ,Function <b>'.$function.'()</b> :'.$errormsg); 
} 
} 
$page=new page(array('total'=>1000,'perpage'=>20)); 
echo 'mode:1<br>'.$page->show(); 
echo '<hr>mode:2<br>'.$page->show(2); 
echo '<hr>mode:3<br>'.$page->show(3); 
echo '<hr>mode:4<br>'.$page->show(4); 
echo '<hr> start AJAX model :'; 
$ajaxpage=new page(array('total'=>1000,'perpage'=>20,'ajax'=>'ajax_page','page_name'=>'test')); 
echo 'mode:1<br>'.$ajaxpage->show(); 
?> 

In fact, my current job is to make the telephone recording system software of the hardware such as the telephone recording card. It is still very sensitive to some code, not only to learn php, but also to learn any programming language, which requires more reading, more writing and more thinking!


Related articles: