自从我开始使用PHP以来,我一直在想这个问题。有些网站使用过滤选项。有时这些过滤器中的一些是完全随机的。例如有人可能正在查看:products.php?c=1&p=1&s=100
在该示例中,我们假设c
是类别,p
是页面,s
是起始价格。
如果观看用户要更改起始价格或使用超链接翻到下一页,那么如何仅更改单个$_GET[]
变量而不更改其他变量。我在PHP中有一个小脚本来获取当前的URI然而,我只是无法弄清楚我是如何只更改该变量同时保持其他不变并刷新页面?我查看了substr()
,strpos()
和ereg_replace()
,我无法理解!
如果这是一个愚蠢的问题,我真的很抱歉,我觉得我错过了一些非常容易解决这个问题的事情,但我真的很困难。
非常感谢! 麦克
答案 0 :(得分:1)
您只需将超链接位置设置为您要更改的变量即可。如果它当前是products.php?c=1&p=1&s=100
并且您想转到products.php?c=2&p=1&s=100
那么您需要拥有这样的锚标记
<?php
$_GET['c'] = $_GET['c']++;
?>
<a href='<?php echo "products.php?c={$_GET['c']}&p=1&s=100" ?>'>link<a/>
它与其他变量相同。
答案 1 :(得分:1)
这取决于您是否在表单或网址中。
如果你是一个表单,那很简单,因为用户更改了他们想要更改的输入字段,其他人留在那里:
<form>
<input type="p" value="1" />
<input type="c" value="1" />
<input type="s" value="100" />
<input type="submit" />
</form>
基于URL的方法的问题是您必须为每个人设置网址:
<a href="?p=1&c=1&s=1">$1 Starting Price</a>
<a href="?p=1&c=1&s=10">$10 Starting Price</a>
<a href="?p=1&c=1&s=100">$100 Starting Price</a>
你必须这样做才能让它变得动态:
<a href="?p=<?php echo urlencode($_GET['p']) ?>&c=<?php echo urlencode($_GET['c']) ?>&s=1">$1 Starting Price</a>
对于所有链接来说,这都是很多打字。您可以创建一个PHP函数来处理更改一个值,如下所示:
function genUrl($newKey, $newVal) {
$url = '?';
foreach ($_GET as $key => $val) {
if ($url != '?') {
$url .= '&';
}
$url .= urlencode($key) . '=' ($key == $newKey ? $newVal : urlencode($val));
}
return $url;
}
你的HTML看起来像这样:
<a href="<?php echo genUrl('s', 1) ?>">$1 Starting Price</a>
<a href="<?php echo genUrl('s', 10) ?>">$1 Starting Price</a>
<a href="<?php echo genUrl('s', 100) ?>">$1 Starting Price</a>