- /**
- * PHP分页代码
- * */
- /**
- * 链接数据库
- * bbs.it-home.org
- * @param string $strHost 数据库服务器主机地址
- * @param string $strAccount 数据库账号
- * @param string $strPassword 数据库密码
- * @return resource
- * */
- function mysqlConnect($strHost,$strAccount,$strPassword,$strDBname)
- {
- $strHost=trim($strHost);
- $strAcount=trim($strAccount);
- $strPassword=trim($strPassword);
- $resLink=mysql_connect($strHost,$strAccount,$strPassword);
- if(!$resLink)
- {
- return false;
- }
- else
- { //set names ... 根据数据库的编码进行设置
- mysql_query('set names utf8',$resLink);
- $isValidate=mysql_select_db($strDBname,$resLink);
- if($isValidate)
- {
- return $resLink;
- }
- else
- {
- return false;
- }
- }
- }
- /**
- *接受分页的当前页码,计算出相应的参数值
- *包括:开始页码$arrParameter['start']
- * 结束页码$arrParameter['end']
- * 总的记录数$arrParameter['all']
- * 每页显示的记录数$arrParameter['nums']
- * 页面中显示的链接数$arrParameter['links']
- * 待查询的sql语句$arrParameter['sql']
- * 分页条类型$arrParameter['tag']
- *
- int $intPage 当前页码值
- int $intNums 每页显示的记录数
- int $intLinks 页面中显示的链接数
- string $strTablename 分页显示数据表
- resource $resLink 数据连接句柄
- array
- * */
- function calculateParamester($intPage,$intNums,$intLinks,$strTablename,$resLink){
- $intPage=(int)$intPage;
- $intNums=(int)$intNums;
- $intLinks=(int)$intLinks;
- //显示的链接数不是奇数时调整为奇数
- if($intLinks % 2 == 0){
- $intLinks--;
- }
- //每页显示的记录数不大于0时调整为10
- if($intNums <= 0){
- $intNums=10;
- }
- //计算总的页数
- $strSql1="select count(*) as num from `{$strTablename}`";
- $resObj1=mysql_query($strSql1,$resLink);
- $arrObj1=mysql_fetch_assoc($resObj1);
- $intAllRecords=$arrObj1['num'];
- $intAllPage=ceil($intAllRecords/$intNums);
- //sql语句limit关键字的第一个参数
- $intOffset=($intPage-1)*$intNums;
- //只显示上一页下一页的情况即显示的链接数不大于0
- if($intLinks <= 0){
- $strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}";
- $arrParameter['start']=null;
- $arrParameter['end']=null;
- $arrParameter['page']=$intPage;
- $arrParameter['nums']=$intNums;
- $arrParameter['links']=null;
- $arrParameter['all']=$intAllPage;
- $arrParameter['sql']=$strSql2;
- $arrParameter['tag']=1;
- //显示分页条码时的情况即显示的链接数大于0
- }else{
- //当总的记录大于0的情况
- if($intAllPage > 0){
- //确定当前页码的值
- if($intPage <= 0){
- $intPage=1;
- }
- if($intPage >= $intAllPage){
- $intPage=$intAllPage;
- }
- $intHalfLinks=floor($intLinks/2);
- //计算开始页码的值
- $intStartPage=$intPage-$intHalfLinks;
- if($intStartPage <= 0){
- $intStartPage=1;
- }
- if(($intAllPage-$intPage) < $intHalfLinks){
- //$intStartPage=$intPage-$intHalfLinks-($intHalfLinks-($intAllPage-$intPage));
- //$intStartPage=$intPage-$intHalfLinks-$intHalfLinks+$intAllPage-$intPage;
- $intStartPage=$intAllPage-2*$intHalfLinks;
- }
- //计算结束页码的值
- $intEndPage=$intPage+$intHalfLinks;
- if($intEndPage < $intLinks && $intAllPage >=$intLinks){
- $intEndPage=$intLinks;
- }
- if($intEndPage > $intAllPage){
- $intEndPage=$intAllPage;
- }
- //创建待执行的sql语句
- $strSql2="select * from `{$strTablename}` limit {$intOffset},{$intNums}";
- $arrParameter['start']=$intStartPage;
- $arrParameter['end']=$intEndPage;
- $arrParameter['page']=$intPage;
- $arrParameter['nums']=$intNums;
- $arrParameter['links']=$intLinks;
- $arrParameter['all']=$intAllPage;
- $arrParameter['sql']=$strSql2;
- $arrParameter['tag']=2;
- //当总的记录等于0的情况
- }else{
- $arrParameter['start']=null;
- $arrParameter['end']=null;
- $arrParameter['page']=null;
- $arrParameter['nums']=null;
- $arrParameter['links']=null;
- $arrParameter['all']=null;
- $arrParameter['sql']=null;
- $arrParameter['tag']=3;
- }
- }
- return $arrParameter;
- }
- /**
- * 创建分页条
- *
- * @param int $intPage 当前显示的页码值
- * @param int $intStartPage 开始页码
- * @param int $intEndPage 结束页码
- * @param int $intAllRecords 总的记录数
- * @param int $intTag 分页条类型标记
- * @return string
- * */
- function createPagingItem($intPage,$intStartPage,$intEndPage,$intAllPage,$intTag){
- $strPageItem='';
- //只显示上一页下一页的情况即显示的链接数不大于0
- if($intTag == 1){
- if($intAllPage <= 0){
- $strPageItem.='首页 尾页';
- }else{
- if($intPage == 1){
- $strPageItem.="首页 上一页";
- $strPageItem.=" ";
- }else{
- $strPageItem.="首页";
- $strPageItem.=" ";
- $strPageItem.="上一页";
- $strPageItem.=" ";
- }
- if($intPage == $intAllPage){
- $strPageItem.="下一页 尾页";
- }else{
- $strPageItem.="下一页";
- $strPageItem.=" ";
- $strPageItem.="尾页";
- }
- }
- }
- //显示分页条码时的情况即显示的链接数大于0
- if($intTag == 2){
- if($intPage == 1){
- $strPageItem.="首页 上一页";
- $strPageItem.=" ";
- }else{
- $strPageItem.="首页";
- $strPageItem.=" ";
- $strPageItem.="上一页";
- $strPageItem.=" ";
- }
- for($i=$intStartPage;$i<=$intEndPage;$i++){
- if($i == $intPage){
- $strPageItem.=$i;
- }else{
- $strPageItem.="[".$i."]";
- }
- $strPageItem.=" ";
- }
- if($intPage == $intAllPage){
- $strPageItem.="下一页 尾页";
- }else{
- $strPageItem.="下一页";
- $strPageItem.=" ";
- $strPageItem.="尾页";
- }
- }
- //当总的记录等于0的情况
- if($intTag == 3){
- $strPageItem.='首页 尾页';
- }
- return $strPageItem;
- }
- /**
- * 获取并输出数据
- *
- * @param string $strSql 查询的sql语句
- * @param array $arrFields 需要显示的字段所组成的一个数组
- * @param resource $resLink 数据连接句柄
- * @return string
- * */
- function outPutData($strSql,$arrFields,$resLink){
- $resObj=mysql_query($strSql,$resLink);
- $arrObj=array();
- $strOutPutData='';
- $arrFieldsCode=array_keys($arrFields);
- while(@$arrRow=mysql_fetch_assoc($resObj)){
- $arrObj[]=$arrRow;
- }
- $strOutPutData.="
";- $strOutPutData.='
';- foreach($arrFieldsCode as $strVal){
- $strOutPutData.="
".$arrFields[trim($strVal)]." | "; - }
- $strOutPutData.="
"; - foreach($arrObj as $arrVal){
- $strOutPutData.="
";- foreach($arrFieldsCode as $strVal){
- $strOutPutData.="
".$arrVal[trim($strVal)]." | "; - }
- $strOutPutData.="
"; - }
- $strOutPutData.="
"; - return $strOutPutData;
- }
- // 连接并选择数据库
- // 注意:你应该修改数据库账号和密码以及数据库名称
- $resLink=mysqlConnect('localhost','root','root','ztlibrary');
- // 求出分页参数 注意:你应该修改数据表名称
- $arrParameter=calculateParamester(@$_GET['page']?$_GET['page']:1,
- 10,5,'book_info',$resLink);
- //待显示的数据,由表的字段名为其键值,字段名的中文解释为其元素值
- //注意:你应该根据你的数据表修改下面这个数组
- $arrFields=array('Id_code'=>'图书编码', 'Book_name'=>'图书名称',
- 'Book_ISBN'=>'ISBN','Contribute_man'=>'来源','Issue_time'=>'出版时间','Storing_time'=>'入库时间');
- ?>
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- php分页演示--www.yuju100.com
- //输出分页数据
- echo outPutData($arrParameter['sql'],$arrFields,$resLink);
- ?>
- //显示分页条
- echo createPagingItem($arrParameter['page'],$arrParameter['start'],$arrParameter['end'],
- $arrParameter['all'],$arrParameter['tag']);
- ?>
|