自己写的mysql分页展示。

比较简单。传智韩老师的思想、可以直接拿来用哈。分层思想的。还没学习MVC,在这里先记录一下。

首先。把分页需要的信息都封装到一个类里面,ApartPage.class.php

<?php
    class ApartPage{
        public $rowCount;  //总共有多少行
        public $pageCount;  //总共有多少页
        public $pageNow=1;  //当前页
        public $pageSize=5;   //每页显示多少行
        public $res_array;    //select之后取回来的结果集等价的数组。
        public $page_whole=10;  //导航条一共有多少页,1 2 3 4 5 6 7 8 9 10 
        public $navigator;    //页面下方的导航条字符串。
    }
    ?>

最底层对数据库操作的函数。

 

<?php
         public function execute_dql_apartpage($sql1,$sql2,$apartPage){
                 $res=$this->conn->query($sql1) or die($this->conn->error);//返回执行select count(id)得到的结果集
                if($row=$res->fetch_row()){
                 $apartPage->rowCount=$row[0];//利用sql1取出rowCount
             }
                 $res->free();//释放结果集
             //    var_dump($sql2);
             //    die();
                 $res2=$this->conn->query($sql2) or die($this->conn->error);//返回执行查询之后得到的结果集;,
                 $arr=array();
                 while ($row=$res2->fetch_row()) {
                     $arr[]=$row;//利用sql2取出所有的行数以及内容,并赋值给一个数组,方便直接释放资源。
                 }
          $res2->free();//释放结果集
$apartPage->res_array=$arr; $apartPage->pageCount=ceil($apartPage->rowCount/$apartPage->pageSize); //以下内容显示导航条区域。 if($apartPage->pageNow>1){ $prePage=$apartPage->pageNow-1; $apartPage->navigator="<a href=‘emplist.php?pageNow=$prePage‘>上一页</a>"; } if ($apartPage->pageNow<$apartPage->pageCount) { $nextPage=$apartPage->pageNow+1; $apartPage->navigator.= "<a href=‘emplist.php?pageNow=$nextPage‘>下一页</a>"; } $start=floor(($apartPage->pageNow-1)/$apartPage->page_whole)*$apartPage->page_whole+1;//这个数字就是下面的超链接数字排列的第一个数字的值。 $index=$start;// for(;$start<$index+$apartPage->page_whole;$start++){ $apartPage->navigator.= "<a href=‘emplist.php?pageNow={$start}‘>[$start]&nbsp</a>"; //如果start增长到和页数一样了就跳出循环。 if ($start==$apartPage->pageCount) { break; } } if ($apartPage->pageNow<$apartPage->pageCount){ $apartPage->navigator.= "&nbsp&nbsp<a href=‘emplist.php?pageNow=$start‘>>></a>";//翻到下一个page_whloe页 } // $page_whloe=;//底下的数字栏一共有多少个数字显示出来。 if($apartPage->pageNow>$apartPage->page_whole){ $preRow=(floor($apartPage->pageNow/$apartPage->page_whole)-1)*$apartPage->page_whole+1;//这里是确定 $apartPage->navigator.= "&nbsp&nbsp<a href=‘emplist.php?pageNow=$preRow‘><<</a>&nbsp&nbsp";//翻到上一个page_whole页。 } //return $apartPage; } ?>

在数据库操作的上一层,封装一个service类,调用底层的这个execute_dql_apartpage函数。EmpService.class.php

<?php
public function getApartPage($apartPage){
                $sqliHelper=new SqliHelper();
                $sql1="select count(id) from myemp";
                $rowBegin=$apartPage->pageSize*($apartPage->pageNow-1);
                $sql2="select * from myemp limit {$rowBegin},{$apartPage->pageSize}";
                $sqliHelper->execute_dql_apartpage($sql1, $sql2, $apartPage);
            }
?>

上面的函数调用之后,$apartPage对象里面就保存了所有分页需要的信息。

具体调用。

<?php
require_once
‘EmpService.class.php‘; require_once ‘ApartPage.class.php‘; $apartPage=new ApartPage(); $empService=new EmpService(); //在getApartPage函数执行之前给pageNow赋值。 if(isset($_GET[‘pageNow‘])){ $apartPage->pageNow=$_GET[‘pageNow‘]; } $empService->getApartPage($apartPage); for($i=0;$i<$apartPage->pageSize;$i++) { echo "<tr>"; $row=@$apartPage->res_array[$i]; if(isset ($row)){//判断$row是否为空,不为空才进行下面的语句 foreach ($row as $k=>$val){ echo "<td>$val</td>"; } echo "</tr>"; } } echo "</table>"; //不能使用自增自减,会使得pageNow数据发生变化。用prePage和nextPage代替即可实现。 echo $apartPage->navigator;//这里显示导航条 上一页 下一页 1 2 3 4 5 << >>等 ?>

至此,分层模式的分页就完成了,其中最底层的execute_dql_apartpage,适用于对所有的数据库进行分页的操作,需要的参数就是一个查询数据库有多少条记录的语句,一个查询要显示的数据的语句。

这些内容都在具体的要服务的页面进行编写

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。