2015-12-01 32 views
0

我的网站上存在一些与我的网址有关的问题。我试图获得给定的GET参数的链接,但我也得到了我以前的参数。

我的网址看起来像这样:

www.cdwinkel.dev/search-results?genre=Pop &媒体= DVD &媒介=单。

它应该是:

www.cdwinkel.dev/search-results?genre=Pop &介质=单。

我运行下面的代码:

$data['url'] = createurl(); 

function createurl(){ 
    $i = 1; 
    $string = "?"; 
    $keys = array_keys($_GET); 
    foreach($_GET as $get){ 
     if($get != ""){ 
     $string .= $keys[$i] . "=" . $get ."&"; 
     $i++; 
     } 
    } 
    $string = rtrim($string, "&"); 
    return $string; 
} 

$ I = 1,因为我在我的数组第一个值是空的。

我的按钮看起来是这样的:

<a href='".$data['url'].'&medium='.$names[$i]."'> 

我想我should'nt设置&媒体= $名称[$ i]在href标记, 但我不会得到新的$。名称[$我]在我的功能,所以我不会得到一个新的网址,如果我不会添加它。

我期待着您的回应。

此致 卡尔斯Takens的

+1

把你的参数到一个数组,然后用['http_build_query'(http://php.net/manual/en/function:

我在我的for循环将这个解决我的问题.http - 构建 - query.php),而不是你自己写的功能(这是严重缺乏,因为它不能处理URL编码正常。) – CBroe

+0

我想这一点,但我发现了一个奇怪的回报。我想这是因为我以错误的方式创建我的数组。我的输入数组如下所示:0 =>'genre'=>'jazz'',1 =>'medium'=>'LP''。它应该是流派=>爵士乐。但我不能得到这个工作 –

+0

那好吧建立你输入数组中开始用正确的方式...? – CBroe

回答

0

此时我已经创建与右arraykeys和值的数组。

$url = array_slice($_GET, 1); 

这将返回以下阵列:

array (size=2) 
    'genre' => string 'Pop' (length=3) 
    'medium' => string 'DVD' (length=3) 

这个我解码成一个新的字符串之后:

genre=Pop&medium=DVD 

我得到了6按钮,我在foreach循环中创建的,但我得到& medium ='VALUE'两次。这只发生在第一次之后。所以第一次我的按钮运行良好。

<?php 
$names = array_keys($data['tellen']); 
$i = 0; 
foreach($data['tellen'] as $m){ 
    echo "<li><a href='search-results?".$data['url'].'&medium='.$names[$i]."'>". $names[$i] ." <span class='product-amount'>(". $m[0]->count. ")</span></a></li>"; 
    $i++; 
} 

希望你能帮助我进一步了解这些信息。

foreach($data['tellen'] as $m){ 
if(isset($_GET['medium'])){ 
    unset($_GET['medium']); 
    $url = array_slice($_GET, 1); 
    $data['url'] = urldecode(http_build_query($url)); 
    } 
echo "<li><a href='search-results?".$data['url'].'&medium='.$names[$i]."'>". $names[$i] ." <span class='product-amount'>(". $m[0]->count. ")</span></a></li>"; 
    $i++; 
}