今天在工作之余写的一段PHP分页处理脚本,欢迎拍砖!!!
显示页面 index.php
<?php require_once 'include/showbbsProcess.php'; require_once 'include/showbbs_fun.php'; @$connectmysql=new connectMysql(); if (empty($_GET['CurrentPageID'])){ $CurrentPageID=1;//当前是第几页 }else { $CurrentPageID=$_GET['CurrentPageID']; } $PageSize=5; echo showCenter($CurrentPageID, $PageSize, $connectmysql); ?>
分页处理函数 showbbsProcess.php
<?php function showCenter($CurrentPageID,$PageSize=5,$connectmysql){ $arr=showbbs($PageSize, $CurrentPageID, $connectmysql); foreach ($arr as $values){ for ($i=0;$i<count($arr);$i++){ echo '<a href="#">'.$arr[$i]['title'].'</a>'.' '.'<span style="float:right;font-size:12px;">作者:'.$arr[$i]['poster'].' '.'发布时间:'.$arr[$i]['posted'].'</span><br /><hr />'; //如果遍历完$arr数组里的所以元素,即$i($i从0开始)等于数组的元素个数减一,则跳出2层循环(for循环和foreach循环) if ($i==(count($arr)-1)) break 2; } } $RowCount=getRowCount($connectmysql);//一共有多少条记录 $PageCount=ceil($RowCount/$PageSize);//共有几页,ceil()函数进一取整 echo '帖子统计:'.$RowCount.'条'.' '.'共有'.$PageCount.'页 '; //当为第一页时不输出“上一页” if ($CurrentPageID != 1){ echo "<a href='index.php?CurrentPageID=".($CurrentPageID-1)."'>上一页</a>"; } //向前跳页 if ($CurrentPageID > 2){ echo "<a href='index.php?CurrentPageID=".($CurrentPageID-2)."'> <<< </a>"; } //输出详细的页数,如:【1】 for ($j=1;$j<=$PageCount;$j++){ echo "<a href='index.php?CurrentPageID=".$j."'>[$j]</a>"; } //向后跳页 if ($CurrentPageID <= ($PageCount-2)){ echo "<a href='index.php?CurrentPageID=".($CurrentPageID+2)."'> >>> </a>"; } //当为最后一页时不输出“下一页” if ($CurrentPageID != $PageCount){ echo "<a href='index.php?CurrentPageID=".($CurrentPageID+1)."'>下一页</a>"; } $connectmysql->closeConn(); }
与数据库沟通的函数 showbbs_fun.php
<?php require_once '/class/connectMysql.php'; //该函数用来获取数据库中的数据并返回一个二维数组 function showbbs($PageSize,$CurrentPageID,$connectmysql){ $a=($CurrentPageID - 1)*$PageSize; $sql="select * from db_content limit $a,$PageSize"; $arr1=$connectmysql->getRowsArray($sql); return $arr1; } //该函数用来查询数据库的表的行数 function getRowCount($connectmysql){ $sql="select * from db_content"; $num=$connectmysql->getRowsNum($sql); return $num; }
数据库类 connectMysql.php
<?php /*** * 这个类用于处理数据库连接相关操作 */ class connectMysql{ private $host='localhost'; private $username='root'; private $password='szy19900316'; private $dbname='db_caomei'; private $conn='';//数据库连接资源 private $result='';//查询的结果 private $resultArray;//将查询的结果输出为一个单条记录的数组 private $rowsArray=array();//含有多条记录的二维数组 private $rowsNum=0;//返回的结果数 function __construct(){ } //连接数据库 function conndb(){ $this->conn=mysql_connect($this->host,$this->username,$this->password); @mysql_select_db($this->dbname,$this->conn); mysql_query('set names utf-8'); } //查询结果 function getResult($sql){ if ($this->conn==''){ $this->conndb(); } $this->result=mysql_query($sql,$this->conn); } //返回查询的记录数 function getRowsNum($sql){ $this->getResult($sql); $num_rows=mysql_num_rows($this->result); if (mysql_errno()==0){ return $num_rows; }else { return ''; } } //将结果输出为一个单条记录数组并返回 function getArray($sql){ $this->getResult($sql); if (mysql_errno()==0){ $this->resultArray=mysql_fetch_array($this->result,MYSQL_ASSOC);//得到关联数组 return $this->resultArray; }else { return ''; } } //返回一个含有多条记录的二维数组 function getRowsArray($sql){ $this->getResult($sql); if (mysql_errno()==0){ while ($row=mysql_fetch_array($this->result,MYSQL_ASSOC)){ $this->rowsArray[]=$row; } return $this->rowsArray; //print_r($this->rowsArray);exit; }else { return ''; } } //更新、添加、删除 function uidresult($sql){ if ($this->conn==''){ $this->conndb(); } //echo $sql; //exit; @mysql_query($sql); $this->rowsNum=@mysql_affected_rows(); if (mysql_errno()==0){ return $this->rowsNum; }else { return ''; } } //释放结果集 function freeResult(){ mysql_free_result($this->result); $this->rowsNum=0; $this->rowsArray=''; $this->resultArray=''; } //关闭数据库 function closeConn(){ $this->freeResult(); mysql_close($this->conn); $this->conn=''; } }