Home  >  Article  >  Backend Development  >  How to use php paging function

How to use php paging function

墨辰丷
墨辰丷Original
2018-06-08 11:41:291487browse

本篇文章主要介绍php分页函数的用法,感兴趣的朋友参考下,希望对大家有所帮助。

具体如下:

/**
 * 分页函数
 * @param int $total  总页数
 * @param int $pagesize 每页几条
 * @param string $pkey url中页面变量名称
 * @param string $url  基础url,其中的{page}会被替换为页码
 * 依赖函数 request_uri httpInt
 */
function page($total,$pagesize=10,$pkey='p',$url=null){
  $a_num=10;
  $first=' 首页 ';
  $last=' 尾页 ';
  $pre=' 上页 ';
  $next=' 下页 ';
  $a_num=$a_num%2==0?$a_num+1:$a_num;
  if(!$url){
    $url=preg_replace("/&?{$pkey}=[^&]{0,}/", '',request_uri());
    $url=strpos($url, '?')===FALSE?$url.'?'.$pkey.'={page}':$url.'&'.$pkey.'={page}';
  }
  $pages=ceil($total/$pagesize);
  $curpage=httpInt($pkey,false,1);
  $curpage=$curpage>$pages||$curpage<=0?1:$curpage;//当前页超范围置为1
  $body=&#39;&#39;;$prefix=&#39;&#39;;$subfix=&#39;&#39;;
  $start=$curpage-($a_num-1)/2;//开始页
  $end=$curpage+($a_num-1)/2; //结束页
  $start=$start<=0?1:$start;  //开始页超范围修正
  $end=$end>$pages?$pages:$end;//结束页超范围修正
  if($pages>=$a_num){//总页数大于显示页数
    if($curpage<=($a_num-1)/2){$end=$a_num;}//当前页在左半边补右边
    if($end-$curpage<=($a_num-1)/2){$start-=5-($end-$curpage);}//当前页在右半边补左边
  }
  for($i=$start;$i<=$end;$i++){
     if($i==$curpage){
       $body.=&#39;<b>&#39;.$i.&#39;</b>&#39;;
     }else{
       $body.=&#39;<a href="&#39;.str_replace(&#39;{page}&#39;,$i,$url).&#39;"> &#39;.$i.&#39; </a>&#39;;
     }
  }
  $prefix=($curpage==1?&#39;&#39;:&#39;<a href="&#39;.str_replace(&#39;{page}&#39;,1,$url).&#39;">&#39;.$first.&#39;</a><a href="&#39;.str_replace(&#39;{page}&#39;,$curpage-1,$url).&#39;">&#39;.$pre.&#39;</a>&#39;);
  $subfix=($curpage==$pages?&#39;&#39;:&#39;<a href="&#39;.str_replace(&#39;{page}&#39;,$curpage+1,$url).&#39;">&#39;.$next.&#39;</a><a href="&#39;.str_replace(&#39;{page}&#39;,$pages,$url).&#39;">&#39;.$last.&#39;</a>&#39;);
  $info=" 第{$curpage}/{$pages}页 ";
  $go=&#39;<script>function ekup(){if(event.keyCode==13){clkyup();}}function clkyup(){if(!/\d+/.test(document.getElementById(\&#39;gsd09fhas9d\&#39;).value)){alert(\&#39;请输入页码!\&#39;);return;};location=\&#39;&#39;.$url.&#39;\&#39;.replace(/\\{page\\}/,document.getElementById(\&#39;gsd09fhas9d\&#39;).value);}</script><input onkeyup="ekup()" type="text" id="gsd09fhas9d" style="width:40px;vertical-align:text-baseline;padding:0 2px;font-size:10px;border:1px solid gray;"/> <span id="gsd09fhas9daa" onclick="clkyup();" style="cursor:pointer;text-decoration:underline;">转到</span>&#39;;
  return $prefix.$body.$subfix.$info.$go;
}
/**
 * 说明:获取 _SERVER[&#39;REQUEST_URI&#39;] 值的通用解决方案
 */
function request_uri()
{
  if (isset($_SERVER[&#39;REQUEST_URI&#39;]))
  {
    $uri = $_SERVER[&#39;REQUEST_URI&#39;];
  }
  else
  {
    if (isset($_SERVER[&#39;argv&#39;]))
    {
      $uri = $_SERVER[&#39;PHP_SELF&#39;] .&#39;?&#39;. $_SERVER[&#39;argv&#39;][0];
    }
    else
    {
      $uri = $_SERVER[&#39;PHP_SELF&#39;] .&#39;?&#39;. $_SERVER[&#39;QUERY_STRING&#39;];
    }
  }
  return $uri;
}
/**
 * 获取HTTP传递的整数
 * @param string $key 参数名称
 * @param bool $ispost 采取POST传递方式,默认为真http://blog.ddian.cn
 * @return 整数,非法时默认为 $default
 */
 function httpInt($key, $ispost=true,$default=0) {
   if ($ispost) {
     if (isset($_POST[$key])) {
       if (empty($_POST[$key])) {
         return $default;
       } else {
         $val = trim($_POST[$key]);
         if (preg_match("/^\-?\d+$/", $val)) return intval($val);
         else return $default;
       }
     } else {
       return $default;
     }
   } else {
     if (isset($_GET[$key])) {
       if (empty($_GET[$key])) {
         return $default;
       } else {
         $val = trim($_GET[$key]);
         if (preg_match("/^\-?\d+$/", $val)) {
           return intval($val);
         } else {
           return $default;
         }
       }
     } else {
       return $default;
     }
   }
}

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

smarty自定义资源的定义与使用技巧

php使用历史记录功能

php针对当前编码的判断与对应的编码转换实现技巧

The above is the detailed content of How to use php paging function. For more information, please follow other related articles on the PHP Chinese website!

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