2015-12-01 56 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++; 
}