2015-12-01 5 views
0

У меня есть некоторые проблемы с моим URL на моем сайте. Я пытаюсь получить ссылку с данными параметрами GET, но я тоже получаю свой предыдущий параметр.

Мой URL выглядит следующим образом:

www.cdwinkel.dev/search-results?genre=Pop & среды = DVD & средний = Single.

Это должно быть:

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; 
} 

$ я = 1, потому что мое первое значение в моем массиве пуста.

И моя кнопка выглядит следующим образом:

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

Я предполагаю, что я should'nt установить & среднего = $ имена [$ я] в HREF тега, , но я не буду получать новый $. имена [$ i] в моей функции, поэтому я не получу новый URL-адрес, если я его не добавлю.

Я с нетерпением жду вашего ответа.

С уважением, Карского Тэкенс

+1

Поместите ваши параметры в массив, а затем использовать [ 'http_build_query'] (http://php.net/manual/en/function .http-build-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, который я создал в цикле Еогеасп, но я получаю & 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++; 
} 

Надеюсь, вы сможете помочь мне с дальнейшей информацией.

я решить мою проблему, добавив это в моем forloop:

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++; 
} 
Смежные вопросы