主题:
写一个分页函数,封装常用操作,分页显示一张人员信息表。
使用PDO技术编写代码,封装函数。并将性别值转化成字符串,实现下拉菜单跳转并高亮显示当前页码。
运行效果:
PDO预处理函数(lib/func_pre_page.php):
<?php /* * 分页函数 */ if (!function_exists('func_page')) { function func_page ($pdo, $table, $page=1, $num=5) { //设置分页偏移量$offset及显示条数$num //计算偏移量公式 $offset = ($page-1) * $num; //准备sql语句 $sql = "SELECT * FROM {$table} LIMIT {$offset}, {$num};"; //创建pdo预处理对象 $stmt = $pdo->prepare($sql); //执行查询操作 $stmt->execute(); $stmt->setFetchMode(PDO::FETCH_ASSOC); //定义结果集变量(数组) $rows = $stmt->fetchAll(); //获取查询记录总行数 $result = $pdo->query("SELECT COUNT(*) FROM {$table};"); //定义结果行数变量 $number = $result->fetch(); //获取行数值 $rowCount = $number[0]; //计算页数值(只要结果有余数则增加一页) $pages = ceil($rowCount / $num); //返回当前的分页结果集和总页数 return ['rows'=>$rows, 'pages'=>$pages]; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
分页表格文件(pages.php):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>信息表格页面</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.1.0/css/bootstrap.min.css"/> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" src="https://cdn.bootcss.com/bootstrap/4.1.0/js/bootstrap.min.js"></script> <style type="text/css"> a:hover, .active { background-color:skyblue; color:white; } form { display:inline; } </style> </head> <body> <?php //加载函数文件 require 'lib/func_pre_page.php'; //连接数据库并创建PDO对象 $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root'); //页面请求值判断 $page = isset($_GET['p']) ? $_GET['p'] : 1; $num = 5; $table = 'staff'; //调用分页函数 $data = func_page ($pdo, $table, $page, $num); //当前分页数 $rows = $data['rows']; //总页数 $pages = $data['pages']; //上一页判断 $page = ($page == 0) ? 1 : $page; //下一页判断 $page = ($page > $pages) ? $pages : $page; ?> <h5 align="center">表格标题</h5> <table class="table table-bordered table-hover" style="max-width:80%;text-align:center;margin:10px auto;"> <tr> <th>ID</th> <th>姓名</th> <th>性别</th> <th>年龄</th> <th>工资</th> </tr> <?php foreach ($rows as $row): ?> <tr> <td><?php echo $row['staff_id']; ?></td> <td><?php echo $row['name']; ?></td> <td><?php echo $row['sex'] == 0 ? '男' : '女'; ?></td> <td><?php echo $row['age']; ?></td> <td><?php echo $row['salary']; ?></td> </tr> <?php endforeach; ?> </table> <div align="center"> <!--判断如果是第一页就不显示上一页和首页--> <?php if($page != 1) : ?> <!--首页--> <a href="http://www.php.io/work/0427/pages.php?p=1">首页</a> <!--上一页--> <a href="http://www.php.io/work/0427/pages.php?p=<?php echo $page-1; ?>">上一页</a> <?php endif; ?> <!--循环生成中间页码--> <?php for($i=1; $i<=$pages; $i++) : ?> <a class="<?php if($page == $i) : ?><?php echo 'active'; ?><?php endif; ?>" href="http://www.php.io/work/0427/pages.php?p=<?php echo $i; ?>"><?php echo $i; ?></a> <?php endfor; ?> <!--如果到最后一页就不显示下一页和尾页--> <?php if ($page != $pages) : ?> <!--下一页--> <a href="http://www.php.io/work/0427/pages.php?p=<?php echo $page+1; ?>">下一页</a> <!--尾页--> <a href="http://www.php.io/work/0427/pages.php?p=<?php echo $pages; ?>">尾页</a> <?php endif; ?> <!--选择页码跳转--> <form action="" method="get"> <span>页码</span> <select name="p" id="p"> <?php for($i=1; $i<=$pages; $i++) : ?> <option value="<?php echo $i; ?>" <?php if($i==$page) : ?><?php echo 'selected'; ?><?php endif ?>><?php echo $i; ?></option> <?php endfor; ?> </select> <button class="btn btn-sm btn-primary">跳转</button> </form> </div> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:
参考老师mysqli源代码使用PDO技术编写代码,注意代码编写过程中混编时尽量不用花括号,改写复用函数时需要注意变量替代值后的业务逻辑。记得函数要返回结果。