封装函数库 func_page.php
<?php /** * 分页函数封装 */ if(!function_exists('func_page')) { function func_page($db,$table,$page=1,$sum=5) { $offset = ($page-1) * $sum; //4.$page当前页数-1 $sql = "SELECT * FROM $table LIMIT {$offset}, {$sum};"; //1.先查询数据库所有数据,LIMIT 参数1:索引位置开始,参数2:每页显示数量 $res = mysqli_query($db,$sql); //2.使用Mysqli获取结果集 $rows = mysqli_fetch_all($res,MYSQLI_ASSOC); //3.将数组进行解析 // echo '<pre>'.print_r($rows,true).'</pre>'; // // 上一页与下一页 // 获取总页数分2步:1.获取总记录数,2.再除以每次的显示数量,结果向上取整 $number = mysqli_query($db,"SELECT count(*) FROM {$table}"); //list() 函数用于在一次操作中给一组变量赋值。 list($total) = mysqli_fetch_row($number); //获取总记录数,并赋值给变量$total $pages = ceil($total / $sum); //返回当前分页数据与总页数 return ['rows'=>$rows, 'pages'=>$pages]; } } 运行实例 » 点击 "运行实例" 按钮查看在线实例
实例 page.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>分页查询</title> <style> table,th,td { border:1px solid; font-size: 13px; text-align: center; } table{ width:1000px; margin: auto; border-collapse: collapse; } th,td{padding: 5px 5px;} th{ background-color: lightblue; } div { width: 1000px; margin: auto; text-align: center; margin-top: 20px; } div a{ text-decoration: none;padding: 5px 10px; border:1px solid #999; display: inline-block; } div a:hover,.active{ background-color: red; color: #fff; } form { display: inline; } </style> </head> <body> <?php // 导入分布函数库 require 'lib/func_page.php'; //连接数据库获取到全部的记录 $db = mysqli_connect('127.0.0.1','root','root','php'); $page = isset($_GET['p']) ? $_GET['p'] : 1; //获取当前页数,isset()进行判断,有就把$_GET['p']值拿到,如果没有就默认返回第1页 $sum = 3; //设置显示数量 $table = 'mana'; //调用分页函数 $data = func_page($db,$table,$page,$sum); $rows = $data['rows']; //当前分页数据 $pages = $data['pages']; //总页数 /********要添加以下代码**********/ //如果当前变成为了0,则强制修改为1,否则就是当前页数 $page = ($page == 0) ? 1 : $page; //如果大于总页数,则强制修改为总页数,否则就是当前页数 $page = ($page > $pages) ? $pages : $page; //获取总页数,总记录数除以每页显示的数量后,得到总页数 $pages ?> <table> <caption><h2>用户管理</h2></caption> <tr> <th>排序</th> <th>用户名</th> <th>用户等级</th> <th>QQ号码</th> <th>存款余额</th> <th>注册时间</th> <th colspan="3">操作</th> </tr> <?php foreach ($rows as $row): ?> <tr> <td><?php echo $row['mana_id']; ?></td> <td><?php echo $row['name']; ?></td> <td><?php echo $row['class']; ?></td> <td><?php echo $row['faqqq']; ?></td> <td><?php echo $row['sum']; ?></td> <td><?php echo $row['join_date']; ?></td> <td><?php echo $row['operation']; ?></td> </tr> <?php endforeach; ?> </table> <div> <?php if($page!=1): //判断当前页数不等于1时,首页和上一页自动隐藏,反之显示?> <a href="http://www.php.com/0427_page/page.php?p=1">首页</a> <a href="http://www.php.com/0427_page/page.php?p=<?php echo $page-1; ?>">上一页</a> <?php endif; ?> <!-- 中间页码 --> <!-- php代码输出class类实现高亮显示 --> <?php for ($i=1; $i<=$pages; $i++): ?> <a href="http://www.php.com/0427_page/page.php?p=<?php echo $i ?>" class="<?php if($_GET['p']==$i){echo 'active';}?>"><?php echo $i ?></a> <?php endfor; ?> <?php if($page != $pages): //判断当前页数不等于总页数时,下一页和尾页自动隐藏,反之显示?> <a href="http://www.php.com/0427_page/page.php?p=<?php echo $page+1; ?>">下一页</a> <a href="http://www.php.com/0427_page/page.php?p=<?php echo $pages; ?>">尾页</a> <?php endif; ?> <!-- 用表单实现下拉框直接跳转到目标页面 --> <form action="" method="get"> 第 <select name="p" id=""> <?php for ($i=1; $i<=$pages ; $i++): ?> <!-- 循环输出全部页码,并锁定当前页--> <option value="<?php echo $i; ?>" <?php if($_GET['p']==$i){echo 'selected';}; ?>><?php echo $i; ?></option> <?php endfor; ?> </select> 页 <button>跳转</button> </form> </div> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例