<?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>';