博客列表 >PDO分页处理

PDO分页处理

艾克的博客
艾克的博客原创
2018年01月08日 13:10:401545浏览
<?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>';


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议