5 PHP简单,高效,分页函数(转)

从http://bbs.php100.com/read-htm-tid-120799.html转载,感谢作者

<?php
/**
* 分页函数
*
* @param int $pagenum 总共记录条数
* @param int $pagesize  每页显示多少条
* @param string $pagename  分页参数名称
* @param int $num 一边显示多少个
* @return 分页字符串
*/
function func_page($pagenum,$pagesize,$pagename="page",$num=5){
    if(!is_numeric($pagenum)||!is_numeric($pagesize)){
        return "分页失败";
    }
    //获取总页数
    $pagecount=$pagenum/$pagesize;
    if(is_float($pagecount)){
        $pagecount=intval($pagecount)+1;
    }
    //处理其他参数以及获取当前页
    $params='';
    foreach($_GET as $key=>$value){
        if($key==$pagename){
            $pageindex=$value;
        }else{
            if(!empty($value)){
                $params.=$key."=".urlencode($value)."&";
            }else{
                $params.=$key."&";
            }
        }
    }
    if(empty($pageindex)||$pageindex>$pagecount){
        $pageindex=1;
    }
    //显示分页数字
    $pages='';
    for($i=1;$i<=$pagecount;$i++){
        if($i>$pageindex-$num&&$i<$pageindex+$num){
            if($i!=$pageindex){
                $pages.="<a href=\"?".$params.$pagename."=$i\">[$i]</a> ";
            }else{
                $pages.="<font color='red'>[$i]</font> ";
            }
        }
    }
    if($pageindex==1||$pagecount==1){
        $vLost="上一页 ";
    }else{
        $vLost=" <a href=\"?".$params.$pagename."=1\">首页</a> <a href=\"?".$params.$pagename."=".($pageindex-1)."\">上一页</a> ";
    }
    if($pagecount==$pageindex){
        $vNext="下一页 ";
    }else{
        $vNext="<a href=\"?".$params.$pagename."=".($pageindex+1)."\">下一页</a> <a href=\"?".$params.$pagename."=".$pagecount."\">尾页</a>";
    }
    $rdata= "共有".$pagecount."页 当前第<font color='red'>".$pageindex."</font>页  ".$vLost.$pages.$vNext;
    return $rdata;
}
echo func_page(30,1);
?>

上面的只是一个普通的分页,不过有留言说这个查询到数据量大的时候,查询会非常慢,参考了
http://pjiaxu.com/php/29.html在SQL语句上面做了一些优化调整,内链接,左链接,右链接

$sql = "SELECT * FROM `user` INNER JOIN (SELECT `id` AS `secid` FROM `user`LIMIT 500000 , 100) AS `tmp` ON `tmp`.`secid` = `user`.id LIMIT 0 , 100";

Related posts:

1 thought on “5 PHP简单,高效,分页函数(转)”

Leave a Reply

Your email address will not be published.