• 技术文章 >php教程 >php手册

    网络中流行的PHP分页效果

    2016-06-13 10:37:34原创389


    论坛 nicholas_ng
    */
    function page($page,$total,$phpfile,$pagesize=3,$pagelen=3){
    $pagecode = ;//定义变量,存放分页生成的HTML
    $page = intval($page);//避免非数字页码
    $total = intval($total);//保证总记录数值类型正确
    if(!$total) return array();//总记录数为零返回空数组
    $pages = ceil($total/$pagesize);//计算总分页
    //处理页码合法性
    if($page<1) $page = 1;
    if($page>$pages) $page = $pages;
    //计算查询偏移量
    $offset = $pagesize*($page-1);
    //页码范围计算
    $init = 1;//起始页码数
    $max = $pages;//结束页码数
    $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
    $pageoffset = ($pagelen-1)/2;//页码个数左右偏移量

    //生成html
    $pagecode=

    ;
    $pagecode.="$page/$pages";//第几页,共几页
    //如果是第一页,则不显示第一页和上一页的连接
    if($page!=1){
    $pagecode.="<<";//第一页
    $pagecode.="<";//上一页
    }
    //分页数大于页码个数时可以偏移
    if($pages>$pagelen){
    //如果当前页小于等于左偏移
    if($page<=$pageoffset){
    $init=1;
    $max = $pagelen;
    }else{//如果当前页大于左偏移
    //如果当前页码右偏移超出最大分页数
    if($page+$pageoffset>=$pages+1){
    $init = $pages-$pagelen+1;
    }else{
    //左右偏移都存在时的计算
    $init = $page-$pageoffset;
    $max = $page+$pageoffset;
    }
    }
    }
    //生成html
    for($i=$init;$i<=$max;$i++){
    if($i==$page){
    $pagecode.=.$i.;
    } else {
    $pagecode.="$i";
    }
    }
    if($page!=$pages){
    $pagecode.=">";//下一页
    $pagecode.=">>";//最后一页
    }
    $pagecode.=
    ;
    return array(pagecode=>$pagecode,sqllimit=> limit .$offset.,.$pagesize);
    }
    ?>


    ===========bkJia提供======演示================

    $phpfile = index.php;//页面文件名
    $page= isset($_GET[page])?$_GET[page]:1;//默认页码
    $db = mysql_connect(localhost,test,test);//链接数据库
    mysql_select_db(test,$db);//选择数据库
    $counts = mysql_num_rows(mysql_query(select `id` from `test`,$db));//获取需要的数据总条数
    $sql=select `id`,`title` from `test`;//定义查询语句SQL
    $getpageinfo = page($page,$counts,$phpfile);//调用函数,生成分页HTML 和 SQL LIMIT 子句
    $sql.=$getpageinfo[sqllimit];//组合完整的SQL语句
    $data = $row = array();//初始化数组
    $result = mysql_query($sql,$db);//获取结果集
    //将数据装入$data数组
    while($row = mysql_fetch_array($result)){
    $data[]=$row;
    }
    ?>
    echo $getpageinfo[pagecode];//显示分页的html代码
    ?>

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:将DAO Generator应用于PHP和MySQL 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP代码:Http断点续传的实现例子• PHP5中Cookie与 Session使用详解• php实现文件下载更能介绍• php写的简易聊天室代码• 整理:Apache+MySql+PHP的快速安装
    1/1

    PHP中文网