好的,我有一个关于PHP的问题,我不知道我是不是只是愚蠢或者这比我想的要困难得多:/
所以我试图通过URL中的GET参数过滤掉一些结果。我认为这样做的最佳方式与ebuyer.com类似。
当您按不同类别过滤搜索结果时,URl就像这样构建
filtercat=36,134,142,62 etc
他们如何在保留所选类别的其余部分的同时添加参数?
帮助!
我基本上是想在左侧边栏上创建this site上的内容,您可以在其中为搜索选择和取消选择过滤器
非常感谢任何回复
更新
下面是一些代码,但重复点击链接会导致多次出现相同的值
e.g。 categories.php?filtercat = 361343636
如何停止此操作并在其间添加逗号,以便输出?
e.g。 categories.php?filtercat = 36,134等
<?php
$filter = $_GET['filtercat'];
$pieces = explode(",", $filter);
$edit_url = http_build_query( Array( 'filtercat' => ''.$pieces[0].$pieces[1].$pieces[2].'' ) );
echo($edit_url);
?>
然后在我的链接中
<a href="<?php echo('categories.php?'.$edit_url.'36'); ?>">36catagory</a>
<a href="<?php echo('categories.php?'.$edit_url.'134'); ?>">134catagory</a>
爆炸不起作用,因为没有逗号......整个事情真是一团糟,我很困惑:/帮助!
答案 0 :(得分:0)
script.php?filtercat [] = 36&amp; filtercat [] = 134
答案 1 :(得分:0)
传递多个值的另一个值是使用值序列化数组。
$array = array('filtercat' =>
array(25, 32, 49)
);
$passme = serialize($array);
然后发送$ passme作为GET。
<a href='test.php?val=<?php echo $passme; ?>'>Link</a>
然后,您可以稍后对其进行反序列化,并获取包含所有值的数组
$serilized = $_GET['val'];
$array = unserialize($serialized);
将打印出来:
阵 ( [filtercat] =&gt;排列 ( [0] =&gt; 25 [1] =&gt; 32 [2] =&gt; 49 ) )
答案 2 :(得分:0)
为什么不使用http_build_query
来重建查询字符串?我假设您知道所有$_GET
参数的值,那么为什么要在重建它时烦恼附加到查询字符串?
答案 3 :(得分:0)
除了explode()
之外,您还需要implode()
,可能需要array_unique()
。
$filter = $_GET['filtercat'];
$pieces = explode(',', $filter);
$edit_url = http_build_query( Array(
'filtercat' => implode(',', array_unique($pieces))
));