将GET变量保持在分页中

时间:2018-03-27 01:21:48

标签: php pagination

我在HTML表单中有大约10个GET变量。

这些传递到search.php,每页通过分页返回20个结果。但是,当我单击“下一页”按钮时,它会将URL重写为“?pageno = 2”。它首先会忘记所有的GET变量。

我可以将这些变量保存到下一页的最简单方法是什么?我不能使用Session因为我需要用户尽可能多地打开搜索系统的实例,并且我无法手动编辑URL,因为URL可能有2个变量或14个变量,具体取决于用户选择的内容。

2 个答案:

答案 0 :(得分:1)

您可以使用$_GET数组和http_build_query()函数。 E.g。

$params = $_GET;
$params['page'] = $page;  // Set previous/next page

$uri = $_SERVER['REQUEST_URI'];
$query = http_build_query($params);

$url = "{$uri}?{$query}";

答案 1 :(得分:0)

尽管http_build_query是fubar提到的常用方法,但我发现了一个更简单的解决方案。

我使用preg_replace来改变URL中的pageno

     <!-- Next li -->

<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { 

$npage = "&pageno=". (intval($pageno) + intval(1));

if (isset($_GET['pageno']))

 {

$npg = preg_replace('~((?<=\?)pageno=\d+&?|&pageno=\d+)~i', $npage, $_SERVER['REQUEST_URI']);               

echo $npg;

 }

else 

 { 

echo $_SERVER['REQUEST_URI']. $npage; 

 }

 } ?>">Next</a>
</li>

变量$ pageno在分页的开头设置。如果在$ _GET [&#39; pageno&#39;]中找到null,则将其设置为1.否则它将获取其GET值。