[原创]九狐科技之php是关于分页

我之前用ASP用了三年多,一年前改为PHP,所以在我的PHP代码里面都包含有ASP编程的影子,很多代码都有以前ASP编程的习惯,就分页来说,刚开始分页的时候都是套用ASP里面的分页来实现的,一般情况下我都会把数据库读取做一个专用类,里面包括有对数据库的各种操作,是否分页等,这样用起来就很方便了。以前为我的数据库操作的最主要的两段代码:

读取数据库并转化为分页数组。

 1
private function rs2array($sql='',$filename='',$pagesize=0){ //=============== 生成二维数组 =============== 2 //echo '---------------------+'.$pagesize.'+------------'; 3 $autopage=false; 4 if (!isset($sql))die("未设置语句!"); 5 $str=array(); 6 $result = $this->Open_Db($sql); 7 $this->recordcount=$result->recordcount; 8 //echo $sql.'  result:'.$this->recordcount.'<br />'."\n"; 9 if ((isset($filename)) && ($pagesize!=0)){ //分页开始 10 //echo '------------+'.$filename.'+---------+'.$pagesize.'+------------'; 11 $autopage=true; 12 $FilesName = $filename; 13 $result->pagesize=$pagesize; 14 $page=$_GET['page']; 15 if (($page!='') && (is_numeric($page))){ 16 $epage = $page; 17 if ($epage<1)$epage=1; 18 if ($epage>$result->pagecount)$epage = $result->pagecount; 19 }else{ 20 $epage=1; 21 } 22 if(!$result->eof)$result->Absolutepage=$epage; 23 $whileNum=$result->pagesize; 24 } 25 26 if(!isset($whileNum))$whileNum=$result->recordcount; 27 //echo '$whileNum:'.$whileNum; 28 for($i=1;$i<=$whileNum;$i++){ 29 if($result->eof)break; 30 for($n=0;$n<=($result->fields->count-1);$n++){ 31 $str[$i-1][$result[$n]->name] = $result[$n]->value; 32 } 33 $result->movenext(); 34 } 35 if($autopage==true)$this->page = $this->Paging($filename,$result->pagecount,$epage); 36 $result->close(); 37 return $str; 38 }

调用分页代码:

 1 static private function Paging($FilesName,$PageCount,$page){   //===============  分页  ===============
 2         $PageStr="";
 3         $topname='首页';
 4         $bottomname='尾页';
 5         $overname='上一页';
 6         $upname='下一页';
 7         $p=$FilesName.'page=';
 8         if ($PageCount>1){
 9             if ($page<=1){
10                 $page=1;
11                 $PageStr='当前第 '.$page.' / '.$PageCount.' 页 ['.$topname.'] ['.$overname.'] <a href="'.$p.($page+1).'">['.$upname.']</a> <a href="'.$p.($PageCount).'">['.$bottomname.']</a>';
12             }else if($page>=$PageCount){
13                 $page=$PageCount;
14                 $PageStr='当前第 '.$page.' / '. $PageCount . ' 页 <a href="'.$p.(1).'">['.$topname.']</a> <a href="'.$p.($page-1).'">['.$overname.']</a> ['.$upname.'] ['.$bottomname.']';
15             }else{
16                 $PageStr='当前第 ' . $page . ' / '. $PageCount . ' 页 <a href="'.$p.(1).'">['.$topname.']</a> <a href="'.$p.($page-1).'">['.$overname.']</a> <a href="'.$p.($page+1).'">['.$upname.']</a> <a href="'.$p.($PageCount).'">['.$bottomname.']</a>';
17             }
18         }else{
19             $PageCount=1;
20             $page=1;
21             $PageStr=('当前第 ' . $page) . ' / '. $PageCount . ' 页 ['.$topname.'] ['.$overname.'] ['.$upname.'] ['.$bottomname.']';
22         }
23         return $PageStr;
24     }


通过这样的方式,我在读取数据库的时候基本不用担心分页出什么问题。希望能对大家有帮助。

以上纯属个人见解,还请大侠指正.

posted @ 2012-05-17 08:16  [九狐科技]keheng  阅读(1380)  评论(6编辑  收藏  举报