【问题标题】:Pagination to show max value and limit the rest分页显示最大值并限制其余部分
【发布时间】:2013-03-06 16:26:52
【问题描述】:

现在我的分页会显示这样的内容

[1] [2] [3] [4] [5] [6] [7] [8] [9]

我怎样才能让它像这样显示

[1] [2] [3] [4] [5]... [9]

<?php
$per_page = 10;
$pages_query = mysql_query ("SELECT COUNT(`message_id`) FROM `messages`") or die(mysql_error());
$pages = ceil(mysql_result ($pages_query, 0) / $per_page);
$page = (isset ($_GET['page'])) ? (int) $_GET['page'] : 1; 
$start = ($page - 1) * $per_page;
?>

回显分页的相关 if 语句

<?php
    if ($pages >=1 && $page <= $pages) {
        for ($x=1; $x<=$pages;$x++) {
            echo "<a href=\"?page=" .$x."\">".$x."</a>";
        }
    }
?>

【问题讨论】:

  • [offtopic] 如果您有大量数据需要管理,而不是将它们放在多个页面中,请将它们放在一个页面中,但最初只显示少量结果,例如 10。作为用户向下滚动,使用 XMLHttpRequest 异步加载其他内容。就像谷歌对图片搜索或 DuckDuckGo 所做的那样。[/offtopic]。

标签: php mysql if-statement pagination


【解决方案1】:

试试这个:

    <?php
        $link = "";
 // $page = $_GET['page'];
 // $pages=20; // Hardcoded for testing purpose
  $limit=5  ;
    if ($pages >=1 && $page <= $pages)
    {
        $counter = 1;
        $link = "";
        if ($page > ($limit/2))
           { $link .= "<a href=\"?page=1\">1 </a> ... ";}
        for ($x=$page; $x<=$pages;$x++)
        {

            if($counter < $limit)
                $link .= "<a href=\"?page=" .$x."\">".$x." </a>";

            $counter++;
        }
        if ($page < $pages - ($limit/2))
         { $link .= "... " . "<a href=\"?page=" .$pages."\">".$pages." </a>"; }
    }

    echo $link;
?>

输出:

//At page=1
1 2 3 4 ... 20 

//At page=12
1 ... 12 13 14 15 ... 20 

//At page=18
1 ... 18 19 20 

【讨论】:

    【解决方案2】:
    <?php
        if ($pages >=1 && $page <= $pages) {
            $counter = 1;
            $link = "";
            for ($x=1; $x<=$pages;$x++) {
                if($counter < 5)
                    $link .= "<a href=\"?page=" .$x."\">".$x."</a>";
    
                $counter++;
            }
            $link .= "...";
            $link .=  "<a href=\"?page=" .$pages."\">".$pages."</a>";
        }
        echo $link;
    ?>
    

    【讨论】:

    • 这一行有语法错误,我会尝试修复它,但你知道是什么原因造成的吗? $link .= "..." 。 ".$pages.";
    • 好像错了……它总是显示 1234..20 ,不管你在哪个页面
    • @Makesh - 是的,你是对的,我们还需要检查这种情况。但这里只是被问及以“...”格式显示那个长项目列表
    • 好的,我修好了...这只是显示了最佳结果,而不是其余的。即它只是回显“...9”
    • @thedullmistro:请立即尝试。我犯了一个小错误。对不起。
    猜你喜欢
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2014-07-03
    相关资源
    最近更新 更多