Welcome

首页 / 网页编程 / PHP / php中分页及SqlHelper类用法实例

本文实例讲述了php中分页及SqlHelper类用法。分享给大家供大家参考,具体如下:
文档目录结构如下:

SqlHelper.php代码如下:
<?php/** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-26 * Time: 下午8:30 * To change this template use File | Settings | File Templates. */class SqlHelper{private $mysqli;private static $host="localhost";private static $user="root";private static $pwd="";private static $db="world";private $sql=false;private $result=false;function __construct(){$this->mysqli=new MySQLi(self::$host,self::$user,self::$pwd,self::$db);if($this->mysqli->connect_error){die("连接数据库失败! ".$this->mysql->connect_error);}$this->mysqli->query("set names utf8");}function execute_dql_all($sql){//执行查询语句$arr=array();$this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);//将数据转存到$arr数组中while($row=mysqli_fetch_array($this->result,MYSQL_BOTH)){$arr[]=$row;}$this->result->free();return $arr;}function execute_dql_num($sql){//执行查询语句$arr=array();$this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);//将数据转存到$arr数组中while($row=mysqli_fetch_array($this->result,MYSQLI_NUM)){$arr[]=$row;}$this->result->free();return $arr;}function execute_dql_assoc($sql){//执行查询语句$arr=array();$this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);//将数据转存到$arr数组中while($row=mysqli_fetch_array($this->result,MYSQLI_ASSOC)){$arr[]=$row;}$this->result->free();return $arr;}//查询某表中的记录数function execute_dql_counts($table,$id="*"){$this->sql="select count($id) from $table";$this->result=$this->mysqli->query($this->sql);$row=mysqli_fetch_all($this->result);$this->result->free();return $row[0][0];}function execute_dml($sql){//执行正删改$this->result=$this->mysqli->query($sql);if(!$this->result){return -1;//执行正删改失败}else{if($this->mysqli->affected_rows>0){return 1;//执行正删改成功,影响行数}else{return 0;//执行正删改成功,但没有影响行数}}}}
Paging.php代码如下:
<?php/** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-27 * Time: 下午2:48 * To change this template use File | Settings | File Templates. */header("Content-type:text/html;charset=utf-8;");require_once("SqlHelper.php");class Paging {private $sqlHelper=false;private $pageCount=false;//页数private $counts=false;//总记录数private $returnArr=false;//分页超链接的分页function __construct(){$this->sqlHelper=new SqlHelper();$this->returnArr=array();}/* * 参数说明 * * $table 分页时对那个表的数据分页 * $id 辅助查询当前分页的数据表的总记录数 * $pageSize 每页显示多少条信息记录数 * $pagingSize 分页栏每次循环显示出来的个数 * $nowPage 当前是第几页,默认第一页 * $href 分页栏的超链接将要往哪里连接 */function paging_prev_next($table,$id="*",$pageSize,$pagingSize,$nowPage=1,$href){$this->counts=$this->sqlHelper->execute_dql_counts($table,$id);$this->pageCount=ceil($this->counts/$pageSize);$this->returnArr["count"]=$this->counts;$this->returnArr["start"]=($nowPage-1)*$pageSize;$this->returnArr["limit"]=$pageSize;if($nowPage>$this->pageCount || $nowPage<=0){return false;}$t=(ceil($nowPage/$pagingSize)-1)*$pagingSize+1;$pre=$nowPage-$pagingSize;$nex=$nowPage+$pagingSize;echo "<span class="paging-list-a paging-list-a-withBg">{$nowPage}/{$this->pageCount}</span><a href="{$href}?nowPage={$pre}" class="paging-list-a"><</a>";for($i=$t;$i<$t+$pagingSize;$i++){if($i*$pageSize>$this->pageCount*$pageSize){break;}else{if($nowPage==$i){echo "<a href="{$href}?nowPage={$i}" class="paging-list-a paging-list-a-withBg">{$i}</a>";}else{echo "<a href="{$href}?nowPage={$i}" class="paging-list-a">{$i}</a>";}}}echo "<a href="{$href}?nowPage={$nex}" class="paging-list-a">></a>";return $this->returnArr;}}
paging-list-link.css代码如下:
/** * Created by JetBrains PhpStorm. * User: lee * Date: 13-7-27 * Time: 下午5:56 * To change this template use File | Settings | File Templates. */.paging-list-a{border:1px solid #b5b5af;background-color:#efebed;font-family: "Meiryo UI";font-size: 16px;font-weight: 600;padding: 0px 8px 0px 8px;/*cursor: pointer;*/text-decoration: none;color: #292927;}.paging-list-a-withBg{background-color: #1D92E2;color: white;}
usePaging.php代码如下:
<!DOCTYPE html><html><head><title></title><link rel="stylesheet" type="text/css" href="paging-list-link.css"></head><body><?phpheader("Content-type:text/html;charset=utf-8;");require_once "Paging.php";$paging=new Paging();//参数说明/* * $table 分页时对那个表的数据分页 * $id 辅助查询当前分页的数据表的总记录数 * $pageSize 每页显示多少条信息记录数 * $pagingSize 分页栏每次循环显示出来的个数 * $nowPage 当前是第几页,默认第一页 * $href 分页栏的超链接将要往哪里连接,当前页链接地址 *///控制起始页为$nowPage=1;if(isset($_GET["nowPage"])){$nowPage=$_GET["nowPage"];}//定义分页所需参数$meiyexiansi=10;$meiyelianjieshu=10;$receiveArr=array();$receiveArr=$paging->paging_prev_next("city","ID",$meiyexiansi,$meiyelianjieshu,$nowPage,"usePaging.php");//容错判断if(!$receiveArr){return;}//查询每页需要显示的数据,大小限制存在 $receiveArr 数组中$sqlHelper=new SqlHelper();$result=$sqlHelper->execute_dql_num("select * from city limit ".$receiveArr["start"].",".$receiveArr["limit"]."");echo "<pre>";print_r($result);echo "</pre>";?></body></html>
所使用的数据库为 MySQL5.6 所自带的 world 数据库
下面是运行的效果截图:
不过代码还有个 Bug 。就是翻页到最后的时候会出现显示不了,原因在于 Paging.php 文件的 41~43  行左右判断有问题。
错误代码如下:
if($nowPage>$this->pageCount || $nowPage<=0){return false;}



更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP网络编程技巧总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。