分解PHP分页链接

Rab*_*ott 7 php pagination

我有以下方法为PHP中的分页链接创建并返回标记.

public function getPaginationLinks($options) {
    if($options['total_pages'] > 1) {
        $markup = '<div class="pagination">';

        if($options['page'] > 1) {
            $markup .= '<a href="?page=' . ($options['page'] - 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">< prev</a>';
        }       

        for($i = 1; $i <= $options['total_pages']; $i++) {

            if($options['page'] != $i) {
                $markup .= '<a href="?page='. $i . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">' . $i . '</a>';
            }
            else {
                $markup .= '<span class="current">' . $i . '</span>';
            }
        }

        if($options['page'] < $options['total_pages']) {
            $markup .= '<a href="?page=' . ($options['page'] + 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">next ></a>';
        }

        $markup .= '</div>';

        return $markup;
    }
    else {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我刚刚发现(令我惊讶的是)我已经达到了70多页,这意味着现在有70多个链接显示在底部..

我想知道是否有人可以帮助我解决这个问题.我不确定如果我正在说这些数据,那么大多数分页的工作原理是什么?第30页,想法?

Ali*_*xel 4

您只需显示当前页面以及前一页和后一页x(例如 4 页)。

\n\n

如果您在第 1 页:

\n\n
1 2 3 4 5\n
Run Code Online (Sandbox Code Playgroud)\n\n

第 35 页:

\n\n
31 32 33 34 35 36 37 38 39\n
Run Code Online (Sandbox Code Playgroud)\n\n

第 70 页:

\n\n
66 67 68 69 70\n
Run Code Online (Sandbox Code Playgroud)\n\n

例如,您还可以使用\xc2\xab和添加指向第一页和最后一页的快速链接。\xc2\xbb

\n\n
\n\n

例子:

\n\n
$x = 4;\n\nfor ($i = $currentPage - $x; $i < $currentPage; $i++)\n{\n    if ($i >= 1) { /* show link */}\n    else { /* show ellipsis and fix counter */ $i = 1; }\n}\n\n/* show current page number without link */\n\nfor ($i = $currentPage + 1; $i < $currentPage + $x; $i++)\n{\n    if ($i <= $totalPages) { /* show link */}\n    else { /* show ellipsis and break */ break; }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您还可以实现无限历史/分页,这非常酷。=)

\n\n
\n\n

更新:这个 @ Codepad 的更优雅的版本。

\n