dinggela 发表于 2015-8-24 09:08:06

[原创]九狐科技之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   }

  
通过这样的方式,我在读取数据库的时候基本不用担心分页出什么问题。希望能对大家有帮助。
  以上纯属个人见解,还请大侠指正.
页: [1]
查看完整版本: [原创]九狐科技之php是关于分页