1、总结分页的偏移量和查询原理。
在数据库中可以分页查询数据。比如偏移量设置成5,就是从第六第数量开始查询。如果设置成10,就是从第十条数据开始查询。所以在计算偏移量的时候,可以利用从$_GET获取过来的参数,通过(页码-1)*显示数据的方面来获取偏移的数值。
实例
<?php /** * 分页查询 */ $pdo = new PDO('mysql:host=localhost;dbname=php','root','root'); $page = isset($_GET['P']) ? $_GET['P'] : 1; //获取P的参数,因为get就是以P=*这样来传的,所以知道 P等于几就可以判断分页了 $pages = ($page-1)*5;//通过分析可以得出,(P-1)*5就是要查询的数据库表中的位置开始查询 $stmt = $pdo->prepare("SELECT * FROM `user` LIMIT {$pages},5"); $stmt->execute(); $srult = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");//查询所有数据库所有数据 $stmt->execute(); $rows = $stmt->fetchColumn(0);//获取返回的记录条数,从0开始算 $pages = ceil($rows / 5);//除以5就可以算出多少页,利用ceil来取整数 ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <table> <caption>员工表</caption> <tr> <td>编号</td> <td>姓名</td> <td>邮箱</td> <td>年龄</td> </tr> <?php foreach ($srult as $srults): ?> <tr> <td><?php echo $srults['id']; ?></td> <td><?php echo $srults['name']; ?></td> <td><?php echo $srults['email']; ?></td> <td><?php echo $srults['age']; ?></td> </tr> <?php endforeach; ?> <a href="http://127.0.0.1/page/demo1.php?P=1">首页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page-1)==0) ? 1 : ($page-1); ?>"">上一页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page+1)>$pages) ? $pages : ($page+1); ?>"">下一页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $pages; ?>">尾页</a> </table> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 分页查询 */ $pdo = new PDO('mysql:host=localhost;dbname=php','root','root'); $page = isset($_GET['P']) ? $_GET['P'] : 1; //获取P的参数,因为get就是以P=*这样来传的,所以知道 P等于几就可以判断分页了 $pages = ($page-1)*5;//通过分析可以得出,(P-1)*5就是要查询的数据库表中的位置开始查询 $stmt = $pdo->prepare("SELECT * FROM `user` LIMIT {$pages},5"); $stmt->execute(); $srult = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");//查询所有数据库所有数据 $stmt->execute(); $rows = $stmt->fetchColumn(0);//获取返回的记录条数,从0开始算 $pages = ceil($rows / 5);//除以5就可以算出多少页,利用ceil来取整数 ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <table> <caption>员工表</caption> <tr> <td>编号</td> <td>姓名</td> <td>邮箱</td> <td>年龄</td> </tr> <?php foreach ($srult as $srults): ?> <tr> <td><?php echo $srults['id']; ?></td> <td><?php echo $srults['name']; ?></td> <td><?php echo $srults['email']; ?></td> <td><?php echo $srults['age']; ?></td> </tr> <?php endforeach; ?> <a href="http://127.0.0.1/page/demo1.php?P=1">首页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page-1)==0) ? 1 : ($page-1); ?>"">上一页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page+1)>$pages) ? $pages : ($page+1); ?>"">下一页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $pages; ?>">尾页</a> </table> <form> 第 <select name="P" id="1"> <?php for ($i=1;$i<=$pages;$i++): ?> <option><?php echo $i; ?></option> <?php endfor; ?> </select> 页 <button>提交</button> </form> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 分页查询 */ $pdo = new PDO('mysql:host=localhost;dbname=php','root','root'); $page = isset($_GET['P']) ? $_GET['P'] : 1; //获取P的参数,因为get就是以P=*这样来传的,所以知道 P等于几就可以判断分页了 $pages = ($page-1)*5;//通过分析可以得出,(P-1)*5就是要查询的数据库表中的位置开始查询 $stmt = $pdo->prepare("SELECT * FROM `user` LIMIT {$pages},5"); $stmt->execute(); $srult = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt = $pdo->prepare("SELECT COUNT(*) FROM `user`");//查询所有数据库所有数据 $stmt->execute(); $rows = $stmt->fetchColumn(0);//获取返回的记录条数,从0开始算 $pages = ceil($rows / 5);//除以5就可以算出多少页,利用ceil来取整数 ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <table> <caption>员工表</caption> <tr> <td>编号</td> <td>姓名</td> <td>邮箱</td> <td>年龄</td> </tr> <?php foreach ($srult as $srults): ?> <tr> <td><?php echo $srults['id']; ?></td> <td><?php echo $srults['name']; ?></td> <td><?php echo $srults['email']; ?></td> <td><?php echo $srults['age']; ?></td> </tr> <?php endforeach; ?> <?php if ($page != 1): ?> <a href="http://127.0.0.1/page/demo1.php?P=1">首页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page-1)==0) ? 1 : ($page-1); ?>"">上一页</a> <?php endif; ?> <?php for ($i=1;$i<=$pages;$i++): ?> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $i; ?>"><?php echo $i; ?></a> <?php endfor; ?> <?php if ($pages != $page): ?> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo (($page+1)>$pages) ? $pages : ($page+1); ?>"">下一页</a> <a href="http://127.0.0.1/page/demo1.php?P=<?php echo $pages; ?>">尾页</a> <?php endif; ?> </table> <form> 第 <select name="P" id="1"> <?php for ($i=1;$i<=$pages;$i++): ?> <option><?php echo $i; ?></option> <?php endfor; ?> </select> 页 <button>提交</button> </form> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例