PHP分页原理实现

373 查看

该实例根据慕课网视频制作

大致步骤:用GET方法传入页码后,从数据库取出数据,通过LIMIT语句显示自己想要的内容长度,再通过前端美化,从而形成我们的分页。
上代码之前:连接,选择数据库这些不多说,不过最后别忘了释放结果,关闭数据库!

关键部分

 $page=$_GET['p']; //$page 是我们想要传入的页码
 $sql="SELECT * FROM table LIMIT  (开始位置,显示条数); //每页显示5条信息
 $total="SELECT COUNT(*) FROM table";//查询表中的信息总数
 $total_pages=ceil($count/每页显示条数);//获取总页数

这样其实第一页就做好了,接下来我们用$page_banner来显示我们的分页条,$page_banner里面的东西很多,所以要用连接符连接,最开始可以设置成空

$start=1;//初始化开始页
$end=$total_pages;//初始化结束页
 $page_banner.="<a href='" .$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";//通 过p的值以及<a>标签可以写出上一页的链接。首页、下一页、尾页同上。其中 $_SERVER['PHP_SELF']表示当前执行的脚本文件所在地址。

  $pageOff0set =(每页显示条数-1)/2//位置偏移量,即选中页面左右各显示几页

页码显示

    if($total_pages>$showPage){
            if($page>$pageOffset+1){
                $page_banner .="...";
            }//总页数大于当前页,当前页超过了偏移量+1,显示省略号
    if($page>$pageOffset){
        $start=$page-$pageOffset;
        $end=$total_pages>$page+$pageOffset?$page+$pageOffset:$total_pages  ;
    }  else{
        $start=1;
        $end=$total_pages>$showPage?$showPage:$total_pages;
    }   //讨论当前页与偏移量的情况,起始页显示各不同
    if($page+$pageOffset>$total_pages){
        $start=$start-($page+$pageOffset-$end);
    }   
} 
   for($i=$start;$i<=$end;$i++)    //最后用For循环显示

页码跳转
页码跳转其实就是一个表单传入

         $page_banner.=" <form action='m.php' method='get' > ";
         $page_banner .="<input type='text' size='2' name='p' >";
         $page_banner .="<input type ='submit'    value='确定'>";
         $page_banner .="</form>";

最后我们来看一看样式方面的设计

 if($page>1){
    $page_banner.="<a href='" .$_SERVER['PHP_SELF']."?p=1'>首页</a>";
      $page_banner.="<a href='" .$_SERVER['PHP_SELF']."?p=".($page-1)."'><上一页</a>";
}else{
      $page_banner.="<span class='disable'>首页</a></span>";
      $page_banner.="<span class='disable'>下一页</a></span>";
}//首先是首页,当前页>1是显示一个样子,小于1时显示另一个样子,随后我们会给class赋值
 div.page span.disable{
        border: #fff 1px solid; padding: 2px 5px 2px 5px;margin: 2px; color: #ddd;

以上的css只是一个例子,用标签直接嵌套进去就可以。

我做的~~~
图片描述

图片描述

这次只是抛砖引玉,个人做了一个十分简陋的分页,期待与各位的交流,期待下一次的进步!