<?php
/**
* 分页原理
* LIMIT子名参数:第一个是显示的起始位置:偏移量,第二参数是当前显示的记录数量
* 第一页:0 。显示5条 从第0个位置开始显示
* 第二页:5,显示5条 从第五个位置开始显示五条记录
* 以此类推。。
* $page当前页数 $num = 当前显示的记录数
* $offset = ($page-1)*$num 偏移量公式
*/
header('content-Type:text/html;charset=utf-8');
$page = isset($_GET['p']) ? $_GET['p'] : 1; //当前页码
$page = ($page==0) ? 1: $page;//判断当前页码是否等于0 如果等于0 让他等于1 不等于0 赋值给$page
$num = 5;//每页显示5条数据
$offset= ($page-1)*$num;//计算出当前第几页
//1用PDO预处理获取表中全部数据
$pdo = new PDO ('mysql:dbname=demo','root','root');
$sql = "SELECT * FROM `user1` LIMIT :offset,:num";
$pdoStmt = $pdo->prepare($sql);
$pdoStmt->bindParam(':offset',$offset,PDO::PARAM_INT);//绑定$offset值
$pdoStmt->bindParam(':num',$num,PDO::PARAM_INT);//绑定$num值
$pdoStmt->execute();
echo '<h3 align="center">用户信息表</h3>';
echo '<table border="1" cellpadding="5" cellspacing="0" width="70%" align="center">';
echo '<tr bgcolor="#adff2f"><th>ID</th><th>用户名</th><th>邮箱</th></tr>';
foreach ($pdoStmt as $row) {
echo '<tr align="center">';
echo '<td>'.$row['id'].'</td><td>'.$row['name'].'</td><td>'.$row['email'].'</td>';
echo '</tr>';
}
echo '</table>';
//计算有多少页,第一步计算出表中有多少数据
$pdoStmt2 = $pdo->prepare("SELECT * FROM user1");
$pdoStmt2->execute();
//echo '表中有:'.$pdoStmt2->rowCount();//计算出数据条数
$totalPage = ceil($pdoStmt2->rowCount()/$num);//ceil:向上取整
$page = ($page == $totalPage) ? ($totalPage-1):$page;//判断当前页码值是否等于当前数据页条数
//创建分页条
echo '<h3 align="center">';
echo '<a href="http://43.226.35.168/php8/page.php?p=1">首页</a>';
echo '<a href="http://43.226.35.168/php8/page.php?p=';
echo (($page-1)==0)?1:($page-1);
echo '">上一页</a>';
for ($i=1;$i<=$totalPage;$i++) {
echo ' <a href="http://43.226.35.168/php8/page.php?p='.$i.'">'.$i.'</a>';
}
echo '<a href="http://43.226.35.168/php8/page.php?p='.($page+1).'">下一页</a>';
echo ' <a href="http://43.226.35.168/php8/page.php?p='.$totalPage.'">尾页</a>';
echo '</h3>';
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号