美文网首页
PHP与mysql的分页功能

PHP与mysql的分页功能

作者: 苏坡闷 | 来源:发表于2018-07-03 23:12 被阅读0次

    今天想实现博客内容的分页,想通过源代码来实现简单的分页,在网上搜索了相关原理,了解到一些内容,大致如下:

    1.分页所需要的变量:

    ①每页多少条记录($pageSize) ;
    ②当前是第几页($currPage)
    

    2.在数据库查询时要使用的关键字,order by、limit

    接下来直接上代码:

    返回五个页码数

    function cPage($total,$pageSize,$currPage){
        $max = ceil($total/$pageSize);   //计算总页数
        $left = max($currPage-2,1);       //计算最左边的页码
        $right = $left + 4;                        //计算最右边的页码
        $right = min($max,$right);          
        $left = $right-4;                           //当页码靠近右极限时,此时的页码可能不够我们此时需要的显示的数量,需要重新判断最左边的页码。
        $left = max($left,1);
    
        for ($i=$left; $i <= $right ; $i++) {      //将五个页码数放到数组里
            $_GET['page'] = $i;
            $pages[$i] = http_build_query($_GET);   //返回可追加到url后的格式化之后的数据
        }
    
        return $pages;
    }
    

    下面我们在分页时需要用到上面的代码

    $pageSql = "select count(*) from art where 1".$where;
    $total = mQuery($pageSql);  //获取总文章数
    $total = $total[0]['count(*)'];
    $pageSize = 4;               //每页显示文章数
    $currPage = isset($_GET['page']) ? $_GET['page'] : 1;  //当前页码数,从地址栏的page中获取
    $pages = cPage($total,$pageSize,$currPage);
    
    //这是要使用到的sql语句,分页原理就是 limit(当前页的页码-1)*每页的数据数量,每页的数据数量
    $sql1 = "select art_id,title,content,catname,pubtime,comm from art inner join cat on art.cat_id = cat.cat_id where 1".$where." order by art_id desc limit ". ($currPage-1)*$pageSize .",".$pageSize;
    

    在html代码中的代码如下:

    <div id="pagebar">
        Pages:&nbsp;
        <?php foreach($pages as $k=>$v){ ?>
        <?php if($k == $currPage){ ?>
        <?php echo $k; }else{ ?>
        <a href="index.php?<?php echo $v; ?>"><?php echo $k; ?></a>
        <?php } ?>
        <?php } ?>
    </div>
    

    至此,一个简单的分页就完成了,当时这只是纯面向过程的实现方式,在实际工作中,需要自己将分页功能封装成分页类。这将在学习面向对象的时候进行研究

                                                                                    2018.7.3

    相关文章

      网友评论

          本文标题:PHP与mysql的分页功能

          本文链接:https://www.haomeiwen.com/subject/gjcsuftx.html