• PHP通用分页类page.php[仿google分页]


    <?php 

    /** 
    ** 通用php分页类。(仿Google样式) 
    ** 只需提供记录总数与每页显示数两个参数。(已附详细使用说明..) 
    ** 无需指定URL,链接由程序生成。方便用于检索结果分页。 
    ** 表单采用GET方法提交,可保证在诸如查询之,删除之类的操作时,不丢失URL参数 
    **/ 

    class Pager{ 
    //IE地址栏地址 
    var $url; 
    //记录总条数 
    var $countall; 
    //总页数 
    var $page; 
    //分页数字链接 
    var $thestr; 
    //首页、上一页链接 
    var $backstr; 
    //尾页、下一页链接 
    var $nextstr; 
    //当前页码 
    var $pg; 
    //每页显示记录数量 
    var $countlist; 
    //翻页样式 
    var $style; 
    //构造函数,实例化该类的时候自动执行该函数 
    function Pager($countall,$countlist,$style="page"){ 
    //记录数与每页显示数不能整队时,页数取余后加1 
    $this->countall = $countall; 
    $this->countlist = $countlist; 
    $this->style=$style; 
    if ($this->countall%$this->countlist!=0){ 
    $this->page=sprintf("%d",$this->countall/$this->countlist)+1; 
    }else{ 
    $this->page=$this->countall/$this->countlist; 


    $this->pg=$_GET["pg"]; 
    //保证pg在未指定的情况下为从第1页开始 
    if (!ereg("^[1-9][0-9]*$",$this->pg) || empty($this->pg)){ 
    $this->pg=1; 

    //页码超出最大范围,取最大值 
    if ($this->pg>$this->page){ 
    $this->pg=$this->page; 

    //得到当前的URL。具体实现请看最底部的函数实体 
    $this->url = Pager::getUrl(); 
    //替换错误格式的页码为正确页码 
    if(isset($_GET["pg"]) && $_GET["pg"]!=$this->pg){ 
    $this->url=str_replace("?pg=".$_GET["pg"],"?pg=$this->pg",$this->url); 
    $this->url=str_replace("&pg=".$_GET["pg"],"&pg=$this->pg",$this->url); 

    //生成12345等数字形式的分页。 
    if ($this->page<=10){ 
    for ($i=1;$i<$this->page+1;$i++){ 
    $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 

    }else{ 
    if ($this->pg<=5){ 
    for ($i=1;$i<10;$i++){ 
    $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 

    }else{ 
    if (6+$this->pg<=$this->page){ 
    for ($i=$this->pg-4;$i<$this->pg+6;$i++){ 
    $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 

    }else{ 
    for ($i=$this->pg-4;$i<$this->page+1;$i++){ 
    $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 





    //生成上页下页等文字链接 
    $this->backstr = Pager::gotoback($this->pg); 
    $this->nextstr = Pager::gotonext($this->pg,$this->page); 
    //echo (" 共".$this->countall." 条,每页".$this->countlist."条,共".$this->page."页".$this->backstr.$this->thestr.$this->nextstr); 

    //生成数字分页的辅助函数 
    function makepg($i,$pg){ 
    if ($i==$pg){ 
    return " <font class='".$this->style."'>".$i."</font>"; 
    }else{ 
    return " <a href=".Pager::replacepg($this->url,5,$i)." class='".$this->style."'><u>".$i."</u></a>"; 


    //生成上一页等信息的函数 
    function gotoback($pg){ 
    if ($pg-1>0){ 
    return $this->gotoback=" <a href=".Pager::replacepg($this->url,3,0)." class='".$this->style."'>首页</a> <a href=".Pager::replacepg($this->url,2,0)." class='".$this->style."'>上一页</a>"; 
    }else{ 
    return $this->gotoback="<span class='".$this->style."'>首页 上一页</span> "; 


    //生成下一页等信息的函数 
    function gotonext($pg,$page){ 
    if ($pg < $page){ 
    return " <a href=".Pager::replacepg($this->url,1,0)." class='".$this->style."'>下一页</a> <a href=".Pager::replacepg($this->url,4,0)." class='".$this->style."'>尾页</a>"; 
    }else{ 
    return " <span class='".$this->style."'>下一页 尾页</span>"; 


    //处理url中$pg的方法,用于自动生成pg=x 
    function replacepg($url,$flag,$i){ 
    if ($flag == 1){ 
    $temp_pg = $this->pg; 
    return str_replace("pg=".$temp_pg,"pg=".($this->pg+1),$url); 
    }else if($flag == 2) { 
    $temp_pg = $this->pg; 
    return str_replace("pg=".$temp_pg,"pg=".($this->pg-1),$url); 
    }else if($flag == 3) { 
    $temp_pg = $this->pg; 
    return str_replace("pg=".$temp_pg,"pg=1",$url); 
    }else if($flag == 4){ 
    $temp_pg = $this->pg; 
    return str_replace("pg=".$temp_pg,"pg=".$this->page,$url); 
    }else if($flag == 5){ 
    $temp_pg = $this->pg; 
    return str_replace("pg=".$temp_pg,"pg=".$i,$url); 
    }else{ 
    return $url; 


    //获得当前URL的方法 
    function getUrl(){ 
    $url="http://".$_SERVER["HTTP_HOST"]; 
    if(isset($_SERVER["REQUEST_URI"])){ 
    $url.=$_SERVER["REQUEST_URI"]; 
    }else{ 
    $url.=$_SERVER["PHP_SELF"]; 
    if(!empty($_SERVER["QUERY_STRING"])){ 
    $url.="?".$_SERVER["QUERY_STRING"]; 


    //在当前的URL里加入pg=x字样 
    if (!ereg("(pg=|PG=|pG=|Pg=)", $url)){ 
    if (!strpos($url,"?")){ 
    $url = $url."?pg=1"; 
    }else{ 
    $url = $url."&pg=1"; 


    return $url; 


    ?>

  • 相关阅读:
    迁移学习
    GAN
    PCA
    LSTM
    hdu 1754 I Hate It 线段树
    hdu 4292 Food 最大流
    hdu 2222 Keywords Search AC自动机
    hdu 3572 Task Schedule hdu 2883 kebab 最大流
    poj 1966 Cable TV Network 点连通度
    hdu 2236 匹配
  • 原文地址:https://www.cnblogs.com/jshen/p/3285083.html
Copyright © 2020-2023  润新知