php mysql limit 分页_原生PHP实现Mysql数据分页功能

一. 思路整理

实现一个数据分页功能,需要有数据的总条数,每页展示的条数,和当前在第几页这三个参数

通过⌈总条数/每页展示的条数⌉可以得到总页数,比如某留言板有101条留言,每页展示10条,一那就需要11个页面进行展示

数据分页核心就是通过SQL的limit函数来控制当前页显示第几条到第几条,比如第一页limit(0,10),就是第1条到第10条,第二页是limit(11,10),就是第11条到第20条 . . . . . .

用当(前页数-1)*每页显示条数+1就可以得到limit的第一个参数,limit的第二个参数就是当前页显示的数据条数.

二. 3个必要参数

当前页$page使用get方式在url中传入,修改page属性就可以跳转页面,点击上一页下一页等操作都是通过修改page实现的

6a1aec02fad6824c9a72926f87b628d7.png

每页展示条数$listRow在实例化page类时传参的方式定义,通过修改l$istrow就可以设置每页显示的信息条数:

16f437409e3d2ad718aa812fc6707c5c.png

d827fc201d73e2b3d2fe3d6297da2397.png

显示的总条数$total通过查询数据库获得:

创建一个数据表messageboard,为了方便只设置id title两个字段

aa5c1ae16747fc425af6f8a58d7f266d.png

创建数据库连接

$pdoObj = new PDO("mysql:host=localhost;dbname=zhangkwebsite", 'root', 'root');

$pdoObj->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

获取数据的总条数$ncount

$query=$pdoObj->query("select count(*) from messageboard");

$val=$query->fetch(PDO::FETCH_ASSOC);

$ncount=$val['count(*)'];

三. 数据分页类

创建一个数据分页类page,在类中定义好需要使用的变量

classpage{private $total;//总记录数

private $listRows;//每页显示行数

private $limit;//sql语句的limit限制

private $uri;//去掉page属性的uri

private $pageNum;//总页数

private $listNum;//页码数量

总记录数和每页显示的条数在用户实例化类时设置

public function __construct($total,$listRows=10){$this->total=$total;$this->listRows=$listRows;

当前页显示的记录$limit

limit (前页数-1)*每页显示条数+1,每页总条数  和前面的例子完全相同

private functionsetLimit()

{return 'Limit' .' '.($this->page - 1) * $this->listRows .','."{$this->listRows}";

}

setLimit()的返回值将保存在私有变量$limit中,使用__get函数为用户提供一个调用的接口

function __get($args)

{if ($args=="limit"){return $this->limit;

}else

return null;

}

这个字符串在用户查询时拼接在sql语句中

$p=new page($ncount,5);

$query=$pdoObj->query("select * from messageboa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值