【问题标题】:Modify a pagination script to show at most 9 page links修改分页脚本以显示最多 9 个页面链接
【发布时间】:2011-05-25 05:15:11
【问题描述】:

这里是一些php分页代码,可以流畅运行。

        $rst =  mysql_query($qry) or die(mysql_error());
        $numrows    =   mysql_num_rows($rst);
        $qry         .= " limit $starting, $recpage";
        $this->result   =   mysql_query($qry) or die(mysql_error());
        $next       =   $starting+$recpage;
        $var        =   ((intval($numrows/$recpage))-1)*$recpage;
        $page_showing   =   intval($starting/$recpage)+1;
        $total_page =   ceil($numrows/$recpage); 



    $norepeat = 4;
    $j = 1;
    for($i=$page_showing; $i>1; $i--){
        $fpreviousPage = $i-1;
        $pagee = ceil($fpreviousPage*$recpage)-$recpage;
        $anch = "<a href='#' >$fpreviousPage</a>".$anch;
        if($j == $norepeat) break;
        $j++;
    }
    $anc .= $anch;  // last 4

    $anc .= $page_showing;   //current page

    $j = 1;
    for($i=$page_showing; $i<$total_page; $i++){
        $fnextPage = $i+1;
        $pagee = ceil($fnextPage*$recpage)-$recpage;
        $anc .= "<a href='#' >$fnextPage</a>"; // next 4
        if($j==$norepeat) break;
        $j++;
    }

但它最多只显示上一页和下一页。喜欢

(1) | 2 | 3 | 4 | 5   // (1) as current page
2 | 3 | 4 | 5 | (6) | 7 | 8 | 9 | 10  // (6) as current page
12 | 13 | 14 | 15 | (16) // (16) as current page, the last page

现在,如何修改代码,使显示如下:

(1) | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9  // (1) as current page
2 | 3 | 4 | 5 | (6) | 7 | 8 | 9 | 10  // (6) as current page
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | (16) // (16) as current page, the last page

至少会显示 9 页分页。

如果总页数少于9,仍然需要避免,

(1) | 2 | 3 | 4 | 5 | 6 | 7 // (1) as current page, 7 pages all, show max 7, not 9.

谢谢。

【问题讨论】:

    标签: php pagination


    【解决方案1】:

    $norepeat = 9;

    然后

     $j = 1;
        for($i=$page_showing; $i<$total_page; $i++){
            $fnextPage = $i+1;
            $pagee = ceil($fnextPage*$recpage)-$recpage;
            $anc .= "<a href='#' >$fnextPage</a>"; // next 4
          if($totalpage>=9){ if($j==$norepeat) break;}else { if($j==$totalpage) break;}
            $j++;
        }
    

    【讨论】:

    • 嗨@zod,在哪里添加if($totalpage&gt;9)?替换$norepeat = 4; ?
    • @zod, woo,替换为这个if($totalpage&gt;=9){ if($j==$norepeat) break;}else { if($j==$totalpage) break;} $j++; 打印出所有页码,45 页,而不是 9 页:{
    • 这个 $page_showing = intval($starting/$recpage)+1; 的值是多少
    • @zod, $recpage = 10;//number of records per page $starting=0// start record number 。你可以看到$qry.= " limit $starting, $recpage";这是用于mysql查询的。
    • @zod,我发现问题$totalpage&gt;=9 应该是$total_page&gt;=9,这使得打印出所有页面。但仍有一个问题。我需要2 | 3 | 4 | 5 | (6) | 7 | 8 | 9 | 10 // (6) as current page 和你的代码make ` 1 | 2 | 3 | 4 | 5 | (6) | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 // (6) as current page` 因为$norepeat = 9; 还有更多建议吗?再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2017-10-18
    • 2020-09-04
    • 1970-01-01
    相关资源
    最近更新 更多