添加到类别过滤的参数

时间:2010-12-22 13:45:39

标签: php

好的,我有一个关于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>

爆炸不起作用,因为没有逗号......整个事情真是一团糟,我很困惑:/帮助!

4 个答案:

答案 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)) 
));