您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

二个php分页程序代码

2024/2/27 21:33:35发布16次查看
php分页器制作,自动生成分面页码,js调用函数,分页的原理大致如下,分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page)。
有了这两个参数就可以很方便的写出分页程序,我们以mysql数据库作为数据源,在mysql里如果要想取出表内某段特定内容可以使用的 t-sql语句:select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page。也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录。
 代码如下 复制代码
totalnum = $count;//总记录数
        $this->pagesize = $size;//每页大小
        $this->pageno = $pageno;
        //计算总页数
        $this->pagecount = ceil($this->totalnum/$this->pagesize);
        $this->pagecount = ($this->pagecountpagecount;
        //检查pageno
        $this->pageno = $this->pageno == 0 ? 1 : $this->pageno;
        $this->pageno = $this->pageno > $this->pagecount? $this->pagecount : $this->pageno;
//计算偏移
        $this->offset = ( $this->pageno - 1 ) * $this->pagesize;
        //计算是否有上一页下一页
        $this->hasprepage = $this->pageno == 1 ?false:true;
        $this->hasnextpage = $this->pageno >= $this->pagecount ?false:true;
$this->pagedata = $pagedata;
        $this->jsfunction = $jsfunction;
}
    /**
     * 分页算法
     * @return
     */
    private function generatepagelist(){
        $pagelist = array();
        if($this->pagecount             for($i=0;$ipagecount;$i++){
                array_push($pagelist,$i+1);
            }
        }else{
            if($this->pageno                 for($i=0;$i                    array_push($pagelist,$i+1);
                }
                array_push($pagelist,-1);
                array_push($pagelist,$this->pagecount);
            }else if($this->pageno > $this->pagecount - 4){
                array_push($pagelist,1);
array_push($pagelist,-1);
                for($i=5;$i>0;$i--){
                    array_push($pagelist,$this->pagecount - $i+1);
                }
            }else if($this->pageno > 4 && $this->pageno pagecount - 4){
                array_push($pagelist,1);
                array_push($pagelist,-1);
array_push($pagelist,$this->pageno -2);
                array_push($pagelist,$this->pageno -1);
                array_push($pagelist,$this->pageno);
                array_push($pagelist,$this->pageno + 1);
                array_push($pagelist,$this->pageno + 2);
array_push($pagelist,-1);
                array_push($pagelist,$this->pagecount);
}
        }
        return $pagelist;
    }
    /***
     * 创建分页控件
    * @param
    * @return string
    */
    public function echopageasdiv(){
        $pagelist = $this->generatepagelist();
$pagestring =
;
if(!empty($pagelist)){
            if($this->pagecount >1){
                if($this->hasprepage){
                    $pagestring = $pagestring .jsfunction . ( . ($this->pageno-1) . )>上一页;
                }
                foreach ($pagelist as $k=>$p){
                    if($this->pageno == $p){
                        $pagestring = $pagestring . . $this->pageno . ;
                        continue;
                    }
                    if($p == -1){
                        $pagestring = $pagestring ....;
                        continue;
                    }
                    $pagestring = $pagestring .jsfunction . ( . $p . )> . $p . ;
                }
if($this->hasnextpage){
                    $pagestring = $pagestring .jsfunction . ( . ($this->pageno+1) . )>下一页;
                }
}
        }
        $pagestring = $pagestring .(
);
        return $pagestring;
    }
}?>
css
 代码如下 复制代码
-->
使用方法
 代码如下 复制代码
$pageno = $_get['pageno'];
        if(empty($pageno)){
            $pageno = 1;
        }
        //分页数据
        $pagedata = news::getnewspage($pageno,$pagesize);
       //取得总行数
        $count = news::getnewscount();
        //创建分页器
        $p = new pageview($count['0']['total'],$pagesize,$pageno,$pagedata);
//生成页码
$pageviewstring = $p->echopageasdiv();
下面再介绍一个分页类
 代码如下 复制代码
each_disnums=intval($each_disnums);  
   $this->nums=intval($nums);  
    if(!$current_page){  
    $this->current_page=1;  
    }else{  
    $this->current_page=intval($current_page);  
    }  
   $this->sub_pages=intval($sub_pages);  
   $this->pagenums=ceil($nums/$each_disnums);  
   $this->subpage_link=$subpage_link;   
   $this->show_subpages($subpage_type);   
   //echo $this->pagenums.--.$this->sub_pages;  
  }
/* 
    __destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。 
   */ 
  function __destruct(){  
    unset($each_disnums);  
    unset($nums);  
    unset($current_page);  
    unset($sub_pages);  
    unset($pagenums);  
    unset($page_array);  
    unset($subpage_link);  
    unset($subpage_type);  
   }
/* 
    show_subpages函数用在构造函数里面。而且用来判断显示什么样子的分页   
   */ 
  function show_subpages($subpage_type){  
    if($subpage_type == 1){  
    $this->subpagecss1();  
    }elseif ($subpage_type == 2){  
    $this->subpagecss2();  
    }  
   }
/* 
    用来给建立分页的数组初始化的函数。 
   */ 
  function initarray(){  
    for($i=0;$isub_pages;$i++){  
    $this->page_array[$i]=$i;  
    }  
    return $this->page_array;  
   }
/* 
    construct_num_page该函数使用来构造显示的条目 
    即使:[1][2][3][4][5][6][7][8][9][10] 
   */ 
  function construct_num_page(){  
    if($this->pagenums sub_pages){  
    $current_array=array();  
     for($i=0;$ipagenums;$i++){   
     $current_array[$i]=$i+1;  
     }  
    }else{  
    $current_array=$this->initarray();  
     if($this->current_page       for($i=0;$i      $current_array[$i]=$i+1;  
      }  
     }elseif ($this->current_page pagenums && $this->current_page > $this->pagenums - $this->sub_pages + 1 ){  
      for($i=0;$i      $current_array[$i]=($this->pagenums)-($this->sub_pages)+1+$i;  
      }  
     }else{  
      for($i=0;$i      $current_array[$i]=$this->current_page-2+$i;  
      }  
     }  
    }
return $current_array;  
   }
/* 
   构造普通模式的分页 
   共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页] 
   */ 
  function subpagecss1(){  
   $subpagecss1str=;  
   $subpagecss1str.=共.$this->nums.条记录,;  
   $subpagecss1str.=每页显示.$this->each_disnums.条,;  
   $subpagecss1str.=当前第.$this->current_page./.$this->pagenums.页 ;  
    if($this->current_page > 1){  
    $firstpageurl=$this->subpage_link.1;  
    $prewpageurl=$this->subpage_link.($this->current_page-1);  
    $subpagecss1str.=[首页] ;  
    $subpagecss1str.=[上一页] ;  
    }else {  
    $subpagecss1str.=[首页] ;  
    $subpagecss1str.=[上一页] ;  
    }
if($this->current_page pagenums){  
    $lastpageurl=$this->subpage_link.$this->pagenums;  
    $nextpageurl=$this->subpage_link.($this->current_page+1);  
    $subpagecss1str.= [下一页] ;  
    $subpagecss1str.=[尾页] ;  
    }else {  
    $subpagecss1str.=[下一页] ;  
    $subpagecss1str.=[尾页] ;  
    }
echo $subpagecss1str;
}
/* 
   构造经典模式的分页 
   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
   */ 
  function subpagecss2(){  
   $subpagecss2str=;  
   $subpagecss2str.=当前第.$this->current_page./.$this->pagenums.页 ;
if($this->current_page > 1){  
    $firstpageurl=$this->subpage_link.1;  
    $prewpageurl=$this->subpage_link.($this->current_page-1);  
    $subpagecss2str.=[首页] ;  
    $subpagecss2str.=[上一页] ;  
    }else {  
    $subpagecss2str.=[首页] ;  
    $subpagecss2str.=[上一页] ;  
    }
$a=$this->construct_num_page();  
    for($i=0;$i    $s=$a[$i];  
     if($s == $this->current_page ){  
     $subpagecss2str.=[.$s.];  
     }else{  
     $url=$this->subpage_link.$s;  
     $subpagecss2str.=[.$s.];  
     }  
    }
if($this->current_page pagenums){  
    $lastpageurl=$this->subpage_link.$this->pagenums;  
    $nextpageurl=$this->subpage_link.($this->current_page+1);  
    $subpagecss2str.= [下一页] ;  
    $subpagecss2str.=[尾页] ;  
    }else {  
    $subpagecss2str.=[下一页] ;  
    $subpagecss2str.=[尾页] ;  
    }  
    echo $subpagecss2str;  
   }  
}  
?>
调用方法
 代码如下 复制代码
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product