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