PHP PDO分页类——封装PDO分页操作,通过PDO可以统一不同数据库的操作方法,下面将对PDO操作数据库的方法进行封装,实现对数据库中数据的分页查询,并输出分页的超级链接。
PHP PDO分页类 语法
class SepPage{
var rs;
varpagesize;
var nowpage;
vararray; var conn;
varsqlstr;
/*
* @ 方法说明:
* 数据分页处理,并以数组形式返回分页信息
*
* @ 参数说明:
* sqlstr:所要执行的SQL语句
*conn:数据库连接ID
* pagesize:每页显示数据的条数
*nowpage:当前显示的页数
*/
function ShowData(sqlstr,conn,pagesize,nowpage){ //定义方法
if(!isset(nowpage) ||nowpage=="") //判断变量值是否为空
this->nowpage=1; //定义每页起始页
elsethis->nowpage=nowpage;this->pagesize=pagesize; //定义每页输出的记录数this->conn=conn; //连接数据库返回的标识this->sqlstr=sqlstr; //执行的查询语句offset=(this->nowpage-1)*this->pagesize;
sql=this->sqlstr." limit offset,this->pagesize";
result=this->conn->prepare(sql); //准备查询语句result->execute(); //执行查询语句,并返回结果集
this->array=result->fetchAll(PDO::FETCH_ASSOC); //获取结果集中的所有数据
if(count(this->array)==0 ||this->array==false)
return false;
else
return this->array;
}
/*
* @ 方法说明:
* 创建数据分页输出的超级链接
*
* @ 参数说明:
*contentname:超级链接总称
* utits:超级链接中数据的单位
*anothersearchstr:超级链接传递的第一个参数
* anothersearchstrs:超级链接传递的第二个参数
*class:超级链接传递的样式
*/
function ShowPage(contentname,utits,anothersearchstr,anothersearchstrs,class){str="";
res=this->conn->prepare(this->sqlstr); //准备查询语句res->execute(); //执行查询语句,并返回结果集
this->array=res->fetchAll(PDO::FETCH_ASSOC); //获取结果集中的所有数据
record=count(this->array); //统计记录总数
pagecount=ceil(record/this->pagesize); //计算共有几页str.=contentname." ".record." ".utits." 每页
".this->pagesize." ".utits." 第 ".this->nowpage."
页/共 ".pagecount." 页";str.=" ";
if(this->nowpage!=1)str.="<a href="._SERVER['PHP_SELF']."?page=1&page_type=".anothersearchstr."¶meter2=".anothersearchstrs." class=".class.
">首页</a>";
else
str.="<font color='#555555'>首页</font>";str.=" ";
if(this->nowpage!=1)str.="<a href="._SERVER['PHP_SELF']."?page=".(this-> nowpage-1).
"&page_type=".anothersearchstr."¶meter2=".anothersearchstrs."
class=".class.">上一页</a>";
elsestr.="<font color='#555555'>上一页</font>";
str.=" ";
if(this->nowpage!=pagecount)str.="<a href="._SERVER['PHP_SELF']."?page=" .(this->nowpage+1)
."&page_type=".anothersearchstr."¶meter2=".anothersearchstrs."
class=".class.">下一页</a>";
elsestr.="<font color='#555555'>下一页</font>";
str.=" ";
if(this->nowpage!=pagecount)str.="<a href="._SERVER['PHP_SELF']."?page=".pagecount."&page_type=
".anothersearchstr."¶meter2=".anothersearchstrs." class=".class.
">尾页</a>";
elsestr.="<font color='#555555'>尾页</font>";
if(count(this->array)==0 ||this->array==false)
return "无数据!";
else
return $str;
}
}
PHP PDO分页类 示例
应用PDO分页类
对db_database02数据库的tb_commo数据表中的数据进行分页输出。载入类的实例化文件,通过分页类AdminDB的$admindb对象调用ShowData ()方法,完成数据表中数据的分页查询操作,调用ShowPage()方法输出分页超级链接。
其关键代码如下:
$connobj=new ConnDB("mysql","localhost","root","111","db_database02");
//数据库连接类实例化
$conn=$connobj->GetConnId(); //执行连接操作,返回连接标识
$admindb=new AdminDB(); //数据库操作类实例化
$seppage=new SepPage(); //分页类实例化
if(isset($_GET['page'])){ //判断分页变量是否存在
$page=$_GET['page'];
}else{
$page=1;
}
$res = $seppage->ShowData("select * from tb_commo ",$conn,2,$page); //执行查询语句
for($i=0;$i<count($res);$i++){ //循环输出查询结果
<table width="636" height="134" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="145" rowspan="5" align="center" valign="middle"><img src="<?php
echo $res[$i]['pics'];?>" width="90" height="100" alt="<?php echo
$res[$i]['name'];?>" style="border: 1px solid #f0f0f0;" /></td>
<td height="35">商品名称:<?php echo $res[$i]['name'];?></td>
<td width="156" height="35">商品类别:<?php echo $res[$i]['class'];?></td>
<td width="157">商品型号:<?php echo $res[$i]['model'];?></td>
</tr>
<tr>
<td height="25"><?php echo $seppage->ShowPage("产品","个",$_GET['page_type'],
'',"a");?></td>
</tr>
</table>
<?php
}
?>