【问题标题】:Searching for advanced php/mysql pagination script [closed]搜索高级 php/mysql 分页脚本 [关闭]
【发布时间】:2010-02-17 11:39:19
【问题描述】:

我正在寻找一个“高级”的 php 分页脚本,它每页显示 10 个 mysql 条目。在网络上有很多“简单”的脚本(甚至使用 jQuery),像这样:http://www.9lessons.info/2009/09/pagination-with-jquery-mysql-and-php.html 这是一个演示:http://demos.9lessons.info/pagination.php

当有数百个条目时,这些简单的脚本很糟糕......所以我需要一个高级脚本 - 我需要这样的东西:

当您在第 1 页时,它应该如下所示:

[1] 2 3 4 5 ... 45

在第 8 页:

1 ... 6 7 [8] 9 10 ... 45

在第 43 页:

1 ... 41 42 [43] 44 45

等等……

许多论坛或博客(例如 wordpress)都在使用这种技术。有人可以提供我的代码吗?必须有一个“最佳实践代码”,但我找不到。 谢谢!

【问题讨论】:

  • 关于 SO 的问题应该显示您尝试过的代码,而不仅仅是对解决方案的一般要求。见stackoverflow.com/about

标签: php mysql pagination paging


【解决方案1】:

试试这个,

function generatePagination($currentPage, $totalPages, $pageLinks = 5)
{
    if ($totalPages <= 1)
    {
        return NULL;
    }

    $html = '<ul class="pagination">';

    $leeway = floor($pageLinks / 2);

    $firstPage = $currentPage - $leeway;
    $lastPage = $currentPage + $leeway;

    if ($firstPage < 1)
    {
        $lastPage += 1 - $firstPage;
        $firstPage = 1;
    }
    if ($lastPage > $totalPages)
    {
        $firstPage -= $lastPage - $totalPages;
        $lastPage = $totalPages;
    }
    if ($firstPage < 1)
    {
        $firstPage = 1;
    }

    if ($firstPage != 1)
    {
        $html .= '<li class="first"><a href="./?p=1" title="Page 1">1</a></li>';
        $html .= '<li class="page dots"><span>...</span></li>';
    }

    for ($i = $firstPage; $i <= $lastPage; $i++)
    {
        if ($i == $currentPage)
        {
            $html .= '<li class="page current"><span>' . $i . '</span></li>';
        }
        else
        {
            $html .= '<li class="page"><a href="./?p=' . $i . '" title="Page ' . $i . '">' . $i . '</a></li>';
        }
    }

    if ($lastPage != $totalPages)
    {
        $html .= '<li class="page dots"><span>...</span></li>';
        $html .= '<li class="last"><a href="./?p=' . $totalPages . '" title="Page ' . $totalPages . '">' . $totalPages . '</a></li>';
    }

    $html .= '</ul>';

    return $html;
}

【讨论】:

    【解决方案2】:

    如果您确实有 100 页的结果,您可能需要考虑对数分页。
    详情请见this post

    【讨论】:

      【解决方案3】:

      看看 this 插件 (jquery)

      分页器与您想要的有点不同,但它会满足您的所有需求。

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-29
          • 1970-01-01
          • 1970-01-01
          • 2013-10-14
          • 1970-01-01
          • 2015-07-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多