美文网首页
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