首页 > 开发 > PHP > 正文

php 经典的分页代码类

2024-05-04 23:06:56
字体:
来源:转载
供稿:网友

这是一款php分页代码是一款经典的可自动判断url参数再进行分页的实例代码,同时自定了上页,下页,首页,尾页,同时还支持select下拉框跳转代码.

php 经典的分页代码类代码如下:

  1. class page{ 
  2.  
  3.  var $page_name="page"
  4.  
  5.  var $next_page='下一页'
  6.  
  7.  var $pre_page='上一页'
  8.  
  9.  var $first_page='首页'
  10.  
  11.  var $last_page='尾页'
  12.  
  13.  var $pre_bar='<<'
  14.  
  15.  var $next_bar='>>'
  16.  
  17.  var $format_left=''
  18.  
  19.  var $format_right=''
  20.  
  21.  var $pagebarnum=5; 
  22.  
  23.  var $totalpage=0; 
  24.  
  25.  var $nowindex=1; 
  26.  
  27.  var $url=""
  28.  
  29.  var $offset=0; 
  30.  
  31.  var $rewrite = array(); 
  32.  
  33.  
  34.  function page($array
  35.  
  36.  { 
  37.  
  38.   if(is_array($array)){ 
  39.  
  40.      if(!array_key_exists('total',$array))$this->error(__function__,'need a param of total'); 
  41.  
  42.      $total=intval($array['total']); 
  43.  
  44.      $perpage=(array_key_exists('perpage',$array))?intval($array['perpage']):10; 
  45.  
  46.      $nowindex=(array_key_exists('nowindex',$array))?intval($array['nowindex']):''
  47.  
  48.      $url=(array_key_exists('url',$array))?$array['url']:''
  49.  
  50.      $action = (array_key_exists('action'$array)) ? $array['action'] : ''
  51.      $id0 = (array_key_exists('id0'$array)) ? $array['id0'] : ''
  52.   $id1 = (array_key_exists('id1'$array)) ? $array['id1'] : ''
  53.   $id2 = (array_key_exists('id2'$array)) ? $array['id2'] : ''
  54.   $id3 = (array_key_exists('id3'$array)) ? $array['id3'] : ''
  55.  
  56.   }else
  57.  
  58.      $total=$array
  59.  
  60.      $perpage=10; 
  61.  
  62.      $nowindex=''
  63.  
  64.      $url=''
  65.  
  66.      $action = ''
  67.      $id0 = ''
  68.      $id1 = ''
  69.      $id2 = ''
  70.   $id3 = ''
  71.  
  72.   } 
  73.  
  74.   if((!is_int($total))||($total<0))$this->error(__function__,$total.' is not a positive integer!'); 
  75.  
  76.   if((!is_int($perpage))||($perpage<=0))$this->error(__function__,$perpage.' is not a positive integer!'); 
  77.  
  78.   if(!emptyempty($array['page_name']))$this->set('page_name',$array['page_name']); 
  79.  
  80.   $this->_set_nowindex($nowindex); 
  81.  
  82.   $this->_set_url($url); 
  83.  
  84.   $this->totalpage=ceil($total/$perpage); 
  85.  
  86.   $this->offset=($this->nowindex-1)*$perpage
  87.  
  88.   $this->action = $action
  89.   $this->rewrite = array('action'=>$action,'id0'=>$id0'id1'=>$id1'id2'=>$id2'id3'=>$id3); 
  90.  } 
  91.  
  92.  function set($var,$value
  93.  { 
  94.  
  95.   if(in_array($var,get_object_vars($this))) 
  96.  
  97.      $this->$var=$value
  98.  
  99.   else { 
  100.  
  101.    $this->error(__function__,$var." does not belong to pb_page!"); 
  102.  
  103.   } 
  104.  
  105.  } 
  106.  
  107.  function next_page($style=''){ 
  108.   if($this->nowindex<$this->totalpage){ 
  109.   return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style); 
  110.  } 
  111.  return '<a class="'.$style.'">'.$this->next_page.'</a>'
  112.  } 
  113.  
  114.  function pre_page($style=''){ 
  115.   if($this->nowindex>1){ 
  116.     return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style); 
  117.   } 
  118.   return '<a class="'.$style.'">'.$this->pre_page.'</a>'
  119.  } 
  120.  
  121.  function first_page($style=''){ 
  122.   if($this->nowindex==1){ 
  123.      return '<a class="'.$style.'">'.$this->first_page.'</a>'
  124.   } 
  125.   return $this->_get_link($this->_get_url(1),$this->first_page,$style); 
  126.  } 
  127.  
  128.  function last_page($style=''){ 
  129.   if($this->nowindex==$this->totalpage||$this->totalpage==0){ 
  130.  
  131.       return '<a class="'.$style.'">'.$this->last_page.'</a>'
  132.  
  133.   } 
  134.  
  135.   return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style); 
  136.  
  137.  } 
  138.  
  139.  
  140.  function nowbar($style='',$nowindex_style=''
  141.  
  142.  { 
  143.  
  144.   $plus=ceil($this->pagebarnum/2); 
  145.  
  146.   if($this->pagebarnum-$plus+$this->nowindex>$this->totalpage)$plus=($this->pagebarnum-$this->totalpage+$this->nowindex); 
  147.  
  148.   $begin=$this->nowindex-$plus+1; 
  149.  
  150.   $begin=($begin>=1)?$begin:1; 
  151.  
  152.   $return=''
  153.  
  154.   for($i=$begin;$i<$begin+$this->pagebarnum;$i++) 
  155.  
  156.   { 
  157.  
  158.    if($i<=$this->totalpage){ 
  159.  
  160.     if($i!=$this->nowindex) 
  161.  
  162.         $return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style)); 
  163.  
  164.     else 
  165.  
  166.         $return.=$this->_get_text('<a class="'.$nowindex_style.'">'.$i.'</a>'); 
  167.  
  168.    }else
  169.  
  170.     break
  171.  
  172.    } 
  173.  
  174.    $return.=" "
  175.  
  176.   } 
  177.  
  178.   unset($begin); 
  179.  
  180.   return $return
  181.  
  182.  } 
  183.  
  184.  /** 
  185.  
  186.   * 获取显示跳转按钮的代码 
  187.  
  188.   * 
  189.  
  190.   * @return string 
  191.  
  192.   */ 
  193.  
  194.  function select() 
  195.  
  196.  { 
  197.  
  198.    $return='<select name="pb_page_select">'
  199.  
  200.   for($i=1;$i<=$this->totalpage;$i++) 
  201.  
  202.   { 
  203.  
  204.    if($i==$this->nowindex){ 
  205.  
  206.     $return.='<option value="'.$i.'" selected>'.$i.'</option>'
  207.  
  208.    }else
  209.  
  210.     $return.='<option value="'.$i.'">'.$i.'</option>'
  211.  
  212.    } 
  213.  
  214.   } 
  215.  
  216.   unset($i); 
  217.  
  218.  
  219.   $return.='</select>'
  220.  
  221.   return $return
  222.  
  223.  } 
  224.  
  225.   
  226.  
  227.  /** 
  228.  
  229.   * 获取mysql教程 语句中limit需要的值 
  230.  
  231.   * 
  232.  
  233.   * @return string 
  234.  
  235.   */ 
  236.  
  237.  function offset() 
  238.  
  239.  { 
  240.  
  241.   return $this->offset; 
  242.  
  243.  } 
  244.  
  245.   
  246.  
  247.  /** 
  248.  
  249.   * 控制分页显示风格(你可以增加相应的风格) 
  250.  
  251.   * 
  252.  
  253.   * @param int $mode 
  254.  
  255.   * @return string 
  256.  
  257.   */ 
  258.  
  259.  function show($mode=1) 
  260.  
  261.  { 
  262.  
  263.   switch ($mode
  264.  
  265.   { 
  266.  
  267.    case '1'
  268.  
  269.     $this->next_page='下一页'
  270.  
  271.     $this->pre_page='上一页'
  272.  
  273.     return $this->pre_page().$this->nowbar().$this->next_page().'第'.$this->select().'页'
  274.  
  275.     break
  276.  
  277.    case '2'
  278.  
  279.     $this->next_page='下一页'
  280.  
  281.     $this->pre_page='上一页'
  282.  
  283.     $this->first_page='首页'
  284.  
  285.     $this->last_page='尾页'
  286.  
  287.     return $this->first_page().$this->pre_page().'[第'.$this->nowindex.'页]'.$this->next_page().$this->last_page().'第'.$this->select().'页'
  288.  
  289.     break
  290.  
  291.    case '3'
  292.  
  293.     $this->next_page='下一页'
  294.  
  295.     $this->pre_page='上一页'
  296.  
  297.     $this->first_page='首页'
  298.  
  299.     $this->last_page='尾页'
  300.  
  301.     return $this->first_page("page_box")."".$this->pre_page("page_box")."".$this->nowbar("page_box_a","page_box_b")."".$this->next_page("page_box")."".$this->last_page("page_box")."<a class="clear"></a>"
  302.  
  303.     break
  304.  
  305.    case '4'
  306.  
  307.     $this->next_page='下一页'
  308.  
  309.     $this->pre_page='上一页'
  310.  
  311.     return $this->pre_page().$this->nowbar().$this->next_page(); 
  312.  
  313.     break
  314.  
  315.    case '5'
  316.  
  317.     return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this->next_bar(); 
  318.  
  319.     break
  320.  
  321.   } 
  322.  
  323.   
  324.  
  325.  } 
  326.  
  327.  function _set_url($url=""
  328.  
  329.  { 
  330.  
  331.   if(!emptyempty($url)){ 
  332.  
  333.    $this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."="
  334.  
  335.   }else
  336.  
  337.    if(emptyempty($_server['query_string'])){ 
  338.  
  339.     $this->url=$_server['request_uri']."?".$this->page_name."="
  340.  
  341.    }else
  342.  
  343.     if(stristr($_server['query_string'],$this->page_name.'=')){ 
  344.  
  345.      $this->url=str_replace($this->page_name.'='.$this->nowindex,'',$_server['request_uri']); 
  346.  
  347.      $last=$this->url[strlen($this->url)-1]; 
  348.  
  349.      if($last=='?'||$last=='&'){ 
  350.  
  351.          $this->url.=$this->page_name."="
  352.  
  353.      }else
  354.  
  355.          $this->url.='&'.$this->page_name."="
  356.  
  357.      } 
  358.  
  359.     }else
  360.  
  361.      $this->url=$_server['request_uri'].'&'.$this->page_name.'='
  362.  
  363.     } 
  364.  
  365.    } 
  366.  
  367.   } 
  368.  
  369.  } 
  370.  
  371.  
  372.  function _set_nowindex($nowindex
  373.  
  374.  { 
  375.  
  376.   if(emptyempty($nowindex)){ 
  377.  
  378.    if(isset($_get[$this->page_name])){ 
  379.  
  380.     $this->nowindex=intval($_get[$this->page_name]); 
  381.  
  382.    } 
  383.  
  384.   }else
  385.  
  386.    $this->nowindex=intval($nowindex); 
  387.  
  388.   } 
  389.  
  390.  } 
  391.  
  392.  function _get_url($pageno=1) 
  393.  { 
  394.   global $_cfg
  395.   $arr = $this->rewrite; 
  396.  //print_r($arr); 
  397.  //print_r($this->url.$pageno); 
  398.   if($_cfg['urlrewrite'] && !emptyempty($arr['action'])){ 
  399.    return url_rewrite($arr['action'], array('id0'=>$arr['id0'],'id1'=>$arr['id1'],'id2'=>$arr['id2'],'id3'=>$arr['id3'],'page'=>$pageno)); 
  400.   }else
  401.    return $this->url.$pageno
  402.   } 
  403.  
  404.  } 
  405.  
  406.  function _get_text($str
  407.  
  408.  { 
  409.  
  410.   return $this->format_left.$str.$this->format_right; 
  411.  
  412.  } 
  413.  
  414.  function _get_link($url,$text,$style=''){ 
  415.  
  416.   $style=(emptyempty($style))?'':'class="'.$style.'"'
  417.  
  418.   return '<a '.$style.' href="'.$url.'">'.$text.'</a>'
  419.  
  420.  } 
  421.  
  422.  
  423.  function error($function,$errormsg
  424. //开源代码Vevb.com 
  425.  { 
  426.  
  427.      die('error in file <b>'.__file__.'</b> ,function <b>'.$function.'()</b> :'.$errormsg); 
  428.  
  429.  } 
  430.  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表