我正在做一个网站。有一个分页,你点击链接,他们会带你到你需要的页面,链接通过$_GET
变量(a href="?pn=2"
),这是正常的。
但是,当我添加类别链接(还包含$_GET
变量时
(a href="?sort=english"
)在同一页面上,对页面上的内容进行排序,然后点击它,系统会简单地覆盖网址并删除之前的所有$_GET
。
例如,我在第2页(http://website.com/index.php?pn=2
)
然后我点击这个排序链接,我期待得到的是这个(http://website.com/index.php?pn=2&sort=english
),但我得到的是:
(http://website.com/index.php?sort=english
)。它只是覆盖了之前的$_GET
,而不是添加到它!
答案 0 :(得分:4)
仅由查询字符串组成的相对URI将替换整个现有查询字符串。无法编写将添加到现有查询的URL。您必须编写所需的完整查询字符串。
您可以通过显式添加来维护现有字符串:
href="?foo=<?php echo htmlspecialchars($_GET['foo']); ?>&bar=123"
答案 1 :(得分:1)
尝试使用:
$_SERVER['REQUEST_URI'];
在this link上,您可以看到示例。在this link上我已经上传了测试文档,您可以自己尝试,它只是从上面打印出这一行。
编辑:虽然这可以帮助您获取URL中的当前参数,但我认为它不适合您。像Quentin所说,你必须手动编写完整的链接并维护每个参数。
答案 2 :(得分:0)
您可以创建一个迭代$_GET
数组并创建查询字符串的函数。然后,您所要做的就是更改$_GET
数组并生成此查询字符串。
Pseudocode(斜线我真的不知道PHP,但这是一个你应该能够遵循的好例子):
function create_query_string($array) {
$kvps = array();
for ($key in $array) {
array_push($kvps, "$key=$array[$key]");
}
return "?" . implode("&", $kvps);
}
用法:
$_GET["sort"] = "english";
$query_string = create_query_string($_GET);
答案 3 :(得分:-1)
创建新链接时需要维护查询参数。页面上的链接应该是这样的:
<a href="?pn=<?= $_GET['pn'] ?>&sort=english">Sort by English</a>
HTTP协议是无状态的 - 它不记得过去。您必须通过PHP或其他方法(cookie等)提醒它以前的HTTP参数是什么。在您的情况下,您需要提醒它当前页码是什么,如上例所示。