|
我之前用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 }
通过这样的方式,我在读取数据库的时候基本不用担心分页出什么问题。希望能对大家有帮助。
以上纯属个人见解,还请大侠指正. |
|
|