PHP之实现分页

PHP分页实现

说明:这里连接数据库用到了我的另外一篇博客,MySQL单例模式的运用,直接连接数据库和查
询,并且把它定义成了一个类文件,通过spl_autoload_register函数来调用。这里也用到了我以
前写的爬虫脚本,去爬取数据,所以还是做笔记好,有自己想查的可以立马找到。

前期分析:

/*
 * 分页:
 * 分析
 * 1.获取当前页码的数量
 * 页码1:SQL语句:select * from products limit 0,30
 * 页码2:SQL语句:select * from products limit 30,30
 * 页码3:SQL语句:select * from products limit 60,30
 * 结论:
 * $pageno:页码
 * $startno:起始页码
 * $pagesize:页面大小
 * 公式:$startno=($pageno-1)*$pagesize
 * $rowcount:总记录数
 * $pagecount:总页数
 * 公式:$pagecount=ceil($rowcount/$pagesize)
 * 步骤:
 * 1.获取总记录数
 * 2.求出总记录数
 * 3.循环显示页码
 * 4.通过当前页面,求出起始位置
 * 5.获取当前页数据,并遍历显示
 */
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        a{
            text-decoration: none;
            display: inline-block;
            height: 30px;
            text-align: center;
            line-height: 200%;
            width: 50px;
        }
    </style>
</head>
<body>
<?php
spl_autoload_register(function ($classnam){
    require './'.$classnam.'.php';
});
$parma = array(
    'user'=>'你的连接数据库用户名',
    'pwd'=>'你的连接数据库密码',
    'host'=>'127.0.0.1',
    'port'=>'端口号',
    'dbname'=>'数据库名'
);
$db = MySQLConnection::getInstance($parma);
//获取总记录数
$rowcount = $db->fetchColumns('select count(*) from goods');
//设置每页显示的数量
$pagesize=26;
//获取总页数
$pagecount = ceil($rowcount/$pagesize);//向上取整有时除不尽
//通过当前页求出起始位置
$pageno = $_GET['pageno']??1;
$startno = ($pageno-1)*$pagesize;
$sql="select * from goods limit {$startno},{$pagesize}";
//有主键(并且为int型)优化的sql语句:select * from 表名 where 主键名>=(select 主键名 from 表名 limit $startno,1) limit $pagesize
$rs=$db->fetchAll($sql);
?>
<table>
    <tr>
        <th>商品名</th>
        <th>价格</th>
        <th>评论数量</th>
        <th>商家名</th>
    </tr>
    <?php foreach ($rs as $row):?>
    <tr>
        <td><?=$row['name']?></td>
        <td><?=$row['price']?></td>
        <td><?=$row['deal']?></td>
        <td><?=$row['title']?></td>
    </tr>
    <?php endforeach;?>
</table><a href="?pageno=1">首页</a>】
【<a href="?pageno=<?=$pageno<=1?1:($pageno-1)?>">上一页</a><?php for ($i=1;$i<=$pagecount;$i++):?>
    <a href="?pageno=<?=$i?>"><?=$i?></a>
<?php endfor;?><a href="?pageno=<?=$pagecount?>">末页</a>】
【<a href="?pageno=<?=$pageno>=$pagecount?$pagecount:($pageno+1)?>">下一页</a></body>
</html>
这里给我的提醒就是老师讲的要自己实现一遍,不能照着老师的抄,就在点击上一页的时候,因为老
师没有写等号,地址栏就出现了pageno=0,而显示的是第一页的数据,所以,写了代码一定需要验证
它的正确性,同样还是那句话:错误在项目上线的时候不能显示在浏览器上。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值