1.分页对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 //保存分页信息的类 3 class PaggingMode{ 4 //分页规格 5 public $pageSize=6; 6 //结果集 7 public $res_array; 8 //总记录 9 public $rowCount; 10 //当前页 11 public $pageNow; 12 //总页数 13 public $pageCount; 14 //分页导航 15 public $navigate; 16 } 17 ?>
2.分页查询
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 require_once 'PaggingModel.php'; 3 //MySql助手类(含分页) 4 class SqlHelper{ 5 6 //属性 7 public $conn; 8 public $dbname="database"; 9 public $username="root"; 10 public $password="root"; 11 public $host="localhost"; 12 13 //构造函数 14 public function __construct(){ 15 $this->conn=mysql_connect($this->host,$this->username,$this->password,$this->dbname); 16 if(!$this->conn){ 17 die(mysql_error()); 18 } 19 //选择数据库 20 mysql_select_db($this->dbname,$this->conn); 21 //设置编码 22 mysql_query("set names utf8"); 23 } 24 25 //执行dql语句 26 public function execute_dql($sql){ 27 $res=mysql_query($sql,$this->conn); 28 return $res; 29 } 30 31 //执行dml语句 32 public function execute_dml($sql){ 33 $b=mysql_query($sql,$this->conn); 34 if(!$b){ 35 //执行失败 36 return 0; 37 } 38 else{ 39 if(mysql_affected_rows($this->conn)>0){ 40 //执行成功 41 return 1; 42 } 43 else{ 44 //没有受影响的行 45 return 2; 46 } 47 } 48 } 49 50 //分页查询 51 public function execute_dql_pagging($sql1,$sql2,$paggingModel){ 52 //获取分页所需要的数据集 53 $res=mysql_query($sql1,$this->conn) or die(mysql_errno()); 54 $arr=array(); 55 //将结果集存储起来 56 while($row=mysql_fetch_assoc($res)){ 57 $arr[]=$row; 58 } 59 //释放结果集 60 mysql_free_result($res); 61 62 //获取记录总数 63 $res=mysql_query($sql2,$this->conn) or die(mysql_errno()); 64 if($row=mysql_fetch_row($res)){ 65 $paggingModel->pageCount=ceil($row[0]/$paggingModel->pageSize); 66 $paggingModel->rowCount=$row[0]; 67 } 68 69 mysql_free_result($res); 70 71 //存储结果集 72 $paggingModel->res_array=$arr; 73 } 74 75 //关闭连接 76 public function close_connect(){ 77 if(!empty($this->conn)){ 78 mysql_close($this->conn); 79 } 80 } 81 } 82 ?>
3.分页逻辑
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 3 require_once 'SqlHelper.php'; 4 require_once 'PaggingModel.php'; 5 //分页逻辑 6 class PaggingBuiness{ 7 function getPagging($paggingModel){ 8 $sqlHelper=new SqlHelper(); 9 $sql1="select * from table limit ".($paggingModel->pageNow-1)*$paggingModel->pageSize.",".$paggingModel->pageSize; 10 $sql2="select count(*) from table"; 11 $sqlHelper->execute_dql_pagging($sql1, $sql2, $paggingModel); 12 13 $sqlHelper->close_connect(); 14 } 15 } 16 ?>
4.测试分页
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 //测试分页 3 require_once 'PaggingBuiness.php'; 4 require_once 'PaggingModel.php'; 5 6 $paggingModel=new PaggingMode(); 7 $paggingModel->pageNow=1; 8 $paggingModel->pageSize=6; 9 10 //改变当前页 11 if(!empty($_GET['pageNow'])){ 12 $paggingModel->pageNow=$_GET['pageNow']; 13 } 14 15 $paggingBuiness=new PaggingBuiness(); 16 $paggingBuiness->getPagging($paggingModel); 17 18 //打印表格结构以及表头 19 echo "html代码"; 20 21 for($i=0;$i<count($paggingModel->res_array);$i++){ 22 $row=$paggingModel->res_array[$i]; 23 echo "输出内容"; 24 } 25 26 //显示上一页和下一页 27 if($paggingModel->pageNow>1){ 28 $prePage=$paggingModel->pageNow-1; 29 echo "a href='xx.php?pageNow=$prePage'>上一页</a> "; 30 } 31 if($paggingModel->pageNow<$paggingModel->pageCount){ 32 $nextPage=$paggingModel->pageNow+1; 33 echo "<a href='xx.php?pageNow=$nextPage'>下一页</a> "; 34 } 35 ?>