php常用模块-分页显示查询结果

PHP 常用模版-分页显示查询所得结果

技术要点:

1.统计返回结果数

2.单页显示结果数

PHP 常用模版-分页显示查询所得结果代码

<?PHP
// 根据搜索结果呈现分页效果
//函数查询结果总数统计
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">&laquo;</span></a></li>';
}else {
  $page_links .= '<li><span aria-hidden="true">&laquo;</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">&raquo;</span></a></li>';
}else {
  $page_links .= '<li><span aria-hidden="true">&raquo;</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);
?>


相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...