zoukankan      html  css  js  c++  java
  • [原创]九狐科技之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     }
    


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

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

  • 相关阅读:
    TCP和UDP的一些区别: TCP提供可靠传输的机制:
    rpc和 http的区别
    熔断原理与实现Golang版
    源码解读 Golang 的 sync.Map 实现原理
    mysql底层为啥用b 树不用红黑树_MySQL索引底层数据结构
    一条sql 查询语句是如何执行的
    网络相关知识
    为什么遍历 Go map 是无序的?
    Go语言 参数传递究竟是值传递还是引用传递的问题分析
    解决goland debug 调试问题 Version of Delve is too old for this version of Go
  • 原文地址:https://www.cnblogs.com/keheng/p/2505677.html
Copyright © 2011-2022 走看看