PHP 常用模版-分页显示查询所得结果
技术要点:
1.统计返回结果数
2.单页显示结果数
PHP 常用模版-分页显示查询所得结果代码
<?php // 根据搜索结果呈现分页效果 //函数1 查询结果总数统计 function build_query($id) { $search_query = SELECT DISTINCT * FROM niao WHERE id = $id; return $search_query; } //函数2 此函数基于当前页和页数生成导航页链接 function generate_page_links($id, $cur_page, $num_pages) { $page_links = ''; // 如果此页不是第一页,则生成“上一页”链接if ($cur_page > 1) { $page_links .= '<li><a href=' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&page=' . ($cur_page - 1) . ' aria-label=Previous><span aria-hidden=true>«</span></a></li>'; }else { $page_links .= '<li><span aria-hidden=true>«</span></li>'; }// 循环浏览生成页码链接的页面//考虑页数可能太多导致的导航链接层叠 $cur_page 当前页码if($cur_page<8){//页数少于5就从1~5排列页链接 $i=1; } else{ $i= $cur_page-2; //大于5 考虑每页保留前两页链接 } $c_page = $cur_page;//当前页$z_page = $c_page+6;//最大呈现页数控制 for ($i; $i <= $num_pages && $c_page<=$z_page; $i++,$c_page++) { if ($cur_page == $i) { $page_links .= '<li><a href=#>'.$i.'</a></li>'; } else { $page_links .= '<li><a href=' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&page=' . $i . '> ' . $i . '</a></li>'; } }// 如果此页不是最后一页,则生成“下一页”链接if ($cur_page < $num_pages) { $page_links .= '<li><a href=' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&page=' . ($cur_page + 1) . ' aria-label=Next><span aria-hidden=true>»</span></a></li>'; }else { $page_links .= '<li><span aria-hidden=true>»</span></li>'; }return $page_links; } // 主程序部分 //GET验证 返回$id require_once('get0.php'); // 计算分页信息 //根据获取的$_GET['page']判断页数,如果未获取设定为第一页 $cur_page = isset($_GET['page']) ? $_GET['page'] : 1; $results_per_page = 15; // 每页结果数 //计算结果页上页第一行行号 $skip = (($cur_page - 1) * $results_per_page); // 链接数据库 require_once('sql.php'); $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.'); // 查询获取结果总数 $query = build_query($id); $result = mysqli_query($dbc, $query); $total = mysqli_num_rows($result); //统计返回的结果总数 $num_pages = ceil($total / $results_per_page);//总数除以每页结果数,计算得页数,然后对结果向上取整数 //再次查询获取结果子集 $query = $query . LIMIT $skip, $results_per_page; $result = mysqli_query($dbc, $query); while ($row = mysqli_fetch_array($result)) { #循环显示内容 echo 'xxxx查询结果'; } // 判断是否需要分页 if ($num_pages > 1) { echo'<nav aria-label=Page navigation>'; echo'<ul class=pagination>'; echo generate_page_links($id, $cur_page, $num_pages); echo'</ul>'; echo'</nav>'; } mysqli_close($dbc); ?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。