将除一个以外的所有 $_GET 值保存到下一页

Save all $_GET values except one to the next page

我有一个 table,其中填充了一些行,它是根据我的分页脚本显示的。在此 table 中,有两个 GET 表单处理排序和每页的行数。发送表格后,URL 变为例如:?page=2&order=desc&view=10.

问题是当我点击不同的页面时,我不知道如何传递 orderview 值。这是我的脚本上一页(或下一页)的link:

$pagination.= "<li><a href=\"$targetpage?page=$prev\">Prev</a></li>";

$prev$page - 1,其中 $page$_GET['page']。当我在第 2 页时,我需要转到第 1 页,我只需单击上面的 link,我需要带上 URL 上的 orderview .

我试过

$build_query = http_build_query($_GET);

用这个编辑上面的行:

$pagination.= "<li><a href=\"$targetpage?page=$prev{$build_query}\">Prev</a></li>";

当然,只要我点击 link 它就会给我

?page=1page=2&order=desc&view=10

所以页面重复了。我也试过 unset($_GET['page']); 但我不知道如何传递上一页值以正确设置 $_GET['page']

编辑 1:

整个分页代码都写在一个函数中,因此要传递的 $_GET 值在页面之间是不同的。

您可以构建自己的查询字符串函数:

function generate_query_string($page_num)
{
    $query = '?';
    foreach ($_GET as $key => $value) {
        if ($key == 'page') {
            $query.=$key.$page_num;
        } else {
            $query.=$key.'='.$value.'&';
        }
    }
    // remove trailing '&'
    return substr($query, 0, strlen($query) - 1);
}

您可以在调用该函数时将所需的页码作为参数传入。