php 多风格的分页类(支持ajax分页)

2021年4月16日 作者 liuyizhi

php 多风格的分页类(支持ajax分页)

  1. <?php 
  2. /** 
  3. * example: 
  4. * 模式四种分页模式: 
  5.    require_once(‘../libs/classes/page.class.php’); 
  6.    $page=new page(array(‘total’=>1000,’perpage’=>20)); 
  7.    echo ‘mode:1<br>’.$page->show(); 
  8.    echo ‘<hr>mode:2<br>’.$page->show(2); 
  9.    echo ‘<hr>mode:3<br>’.$page->show(3); 
  10.    echo ‘<hr>mode:4<br>’.$page->show(4); 
  11.    开启AJAX: 
  12.    $ajaxpage=new page(array 
  13. (‘total’=>1000,’perpage’=>20,’ajax’=>’ajax_page’,’page_name’=>’test’)); 
  14.    echo ‘mode:1<br>’.$ajaxpage->show(); 
  15.    采用继承自定义分页显示模式: 
  16. */ 
  17. class page 
  18. /** 
  19. * config ,public 
  20. */ 
  21. var $page_name=”PB_page”;//page标签,用来控制url页 
  22. var $next_page=’>’;//下一页 
  23. var $pre_page='<‘;//上一页 
  24. var $first_page=’First’;//首页 
  25. var $last_page=’Last’;//尾页 
  26. var $pre_bar='<<‘;//上一分页条 
  27. var $next_bar=’>>’;//下一分页条 
  28. var $format_left='[‘; 
  29. var $format_right=’]’; 
  30. var $is_ajax=false;//是否支持AJAX分页模式 
  31. /** 
  32. * private 
  33. */ 
  34. var $pagebarnum=10;//控制记录条的个数。 
  35. var $totalpage=0;//总页数 
  36. var $ajax_action_name=”;//AJAX动作名 
  37. //开源代码phpfensi.com 
  38. var $nowindex=1;//当前页 
  39. var $url=””;//url地址头 
  40. var $offset=0; 
  41. /** 
  42. * constructor构造函数 
  43. * @param array $array[‘total’],$array[‘perpage’],$array[‘nowindex’],$array 
  44. [‘url’],$array[‘ajax’] 
  45. */ 
  46. function page($array) 
  47. if(is_array($array)){ 
  48.      if(!array_key_exists(‘total’,$array))$this->error(__FUNCTION__,’need a param 
  49. of total’); 
  50.      $total=intval($array[‘total’]); 
  51.      $perpage=(array_key_exists(‘perpage’,$array))?intval($array[‘perpage’]):10; 
  52.      $nowindex=(array_key_exists(‘nowindex’,$array))?intval($array 
  53. [‘nowindex’]):”; 
  54.      $url=(array_key_exists(‘url’,$array))?$array[‘url’]:”; 
  55. }else{ 
  56.      $total=$array; 
  57.      $perpage=10; 
  58.      $nowindex=”; 
  59.      $url=”; 
  60. if((!is_int($total))||($total<0))$this->error(__FUNCTION__,$total.’ is not a 
  61. positive integer!’); 
  62. if((!is_int($perpage))||($perpage<=0))$this->error(__FUNCTION__,$perpage.’ is not 
  63. a positive integer!’); 
  64. if(!emptyempty($array[‘page_name’]))$this->set(‘page_name’,$array[‘page_name’]);//设置 
  65. pagename 
  66. $this->_set_nowindex($nowindex);//设置当前页 
  67. $this->_set_url($url);//设置链接地址 
  68. $this->totalpage=ceil($total/$perpage); 
  69. $this->offset=($this->nowindex-1)*$perpage; 
  70. if(!emptyempty($array[‘ajax’]))$this->open_ajax($array[‘ajax’]);//打开AJAX模式 
  71. /** 
  72. * 设定类中指定变量名的值,如果改变量不属于这个类,将throw一个exception 
  73. * @param string $var 
  74. * @param string $value 
  75. */ 
  76. function set($var,$value) 
  77. if(in_array($var,get_object_vars($this))) 
  78.      $this->$var=$value; 
  79. else { 
  80.    $this->error(__FUNCTION__,$var.” does not belong to PB_Page!”); 
  81. /** 
  82. * 打开倒AJAX模式 
  83. * @param string $action 默认ajax触发的动作。 
  84. */ 
  85. function open_ajax($action) 
  86. $this->is_ajax=true; 
  87. $this->ajax_action_name=$action; 
  88. /** 
  89. * 获取显示”下一页”的代码 
  90. * @param string $style 
  91. * @return string 
  92. */ 
  93. function next_page($style=”) 
  94. if($this->nowindex<$this->totalpage){ 
  95.    return $this->_get_link($this->_get_url($this->nowindex+1),$this- 
  96. >next_page,$style); 
  97. return ‘<span class=”.$style.”>’.$this->next_page.'</span>’; 
  98. /** 
  99. * 获取显示“上一页”的代码 
  100. * @param string $style 
  101. * @return string 
  102. */ 
  103. function pre_page($style=”) 
  104. if($this->nowindex>1){ 
  105.    return $this->_get_link($this->_get_url($this->nowindex-1),$this- 
  106. >pre_page,$style); 
  107. return ‘<span class=”.$style.”>’.$this->pre_page.'</span>’; 
  108. /** 
  109. * 获取显示“首页”的代码 
  110. * @return string 
  111. */ 
  112. function first_page($style=”) 
  113. if($this->nowindex==1){ 
  114.       return ‘<span class=”.$style.”>’.$this->first_page.'</span>’; 
  115. return $this->_get_link($this->_get_url(1),$this->first_page,$style); 
  116. /** 
  117. * 获取显示“尾页”的代码 
  118. * @return string 
  119. */ 
  120. function last_page($style=”) 
  121. if($this->nowindex==$this->totalpage){ 
  122.       return ‘<span class=”.$style.”>’.$this->last_page.'</span>’; 
  123. return $this->_get_link($this->_get_url($this->totalpage),$this- 
  124. >last_page,$style); 
  125. function nowbar($style=”,$nowindex_style=”)