2016-07-21 2 views
3

У меня есть сайт, который использует строки запроса для извлечения данных, как так:Добавить дополнительные запросы к URL по ссылке

<div id="menu-sort-dropdown" class="search-filter-item"> 
    <p><?php echo $query_sort_title; ?></p> 
    <ul class="dropdown-menu"> 
     <li><a href="/teachings/">Newest</a></li> 
     <li><a href="?sort=SORT_DATE_LIT_ASC">Oldest</a></li> 
     <li><a href="?sort=SORT_NAME_ASC">Alphabetically</a></li> 
    </ul> 
</div> 

<div id="menu-category-dropdown" class="search-filter-item"> 
    <p><?php echo $query_category_title; ?></p> 
    <ul class="dropdown-menu"> 
     <li><a href="/teachings/">All</a></li> 
     <li><a href="?category=Coaching">Coaching</a></li> 
     <li><a href="?category=Conversation">Conversation</a></li> 
     <li><a href="?category=Craft">Craft</a></li> 
     <li><a href="?category=Creativity">Creativity</a></li> 
    </ul> 
</div> 

Он прекрасно работает получать данные, такие как:

teachings/?sort=SORT_NAME_ASC 

или

teachings/?category=Creativity 

, но я могу сделать и как:

teachings/?category=Creativity&sort=SORT_NAME_ASC 

Я не могу обернуть вокруг себя, как добавить это. Если я просто добавлю полосу, это станет беспорядком.

ответ

0

Следующий код не «дублирует» значения в URL-адресе, если вы продолжаете нажимать category или sort. Это сделано для копирования/вставки и запуска.

// to check the values 
echo '<pre>'; 
print_r($_GET); 
echo '</pre>'; 

echo '<hr>'; 

function foo($type, $value){ 
    $args = $_GET; 
    $args[$type] = $value; // prevent duplication 
    return http_build_query($args); // returns new query string 
} 

?> 
<a href="?<?php echo foo('sort', 'SORT_DATE_LIT_ASC'); ?>">SORT_DATE_LIT_ASC</a> 
<br> 

<a href="?<?php echo foo('sort', 'SORT_NAME_ASC'); ?>">SORT_NAME_ASC</a> 
<br> 


<a href="?<?php echo foo('category', 'Coaching'); ?>">Coaching</a> 
<br> 
<a href="?<?php echo foo('category', 'Conversation'); ?>">Conversation</a> 

Вы также можете иметь код, чтобы удалить любой из них. Добавьте его сразу после предыдущего кода (также скопируйте/вставьте). Посмотрите:

<?php 
function bar($type){ 
    $args = $_GET; 
    unset($args[$type]); 
    return http_build_query($args); // returns new query string 
} 
?> 

<hr> 
<a href="?<?php echo bar('sort'); ?>">Remove SORT</a> 
<br> 
<a href="?<?php echo bar('category'); ?>">Remove CATEGORY</a> 
+0

Вы можете изменить функциональные имена XD – FirstOne

0

На данный момент ваш выпадающий элемент выполняет простое действие - перейдите к предоставленному URL-адресу. Если вы хотите выбрать несколько значений, тогда ваши элементы должны сохранить выбранное значение вместо открытого URL-адреса. Вы можете сделать это, например, с помощью этого кода JS

var menus = []; 
function addElement(type, element) { 
    menus[type] = element; 
} 

Тип, указанный выше, является индексом номера вашего типа меню. Например, 0 может быть для сортировки и 1 для категории - это для того, чтобы вы могли выбрать только одно значение из типа меню. Теперь вы можете заменить код что-то вроде этого

<div id="menu-sort-dropdown" class="search-filter-item"> 
    <p><?php echo $query_sort_title; ?></p> 
    <ul class="dropdown-menu"> 
     <li><a href="/teachings/">Newest</a></li> 
     <li><a href="javascript: addElement(0, 'sort=SORT_DATE_LIT_ASC');">Oldest</a></li> 
     <li><a href="javascript: addElement(0, 'sort=SORT_NAME_ASC');">Alphabetically</a></li> 
    </ul> 
</div> 

<div id="menu-category-dropdown" class="search-filter-item"> 
    <p><?php echo $query_category_title; ?></p> 
    <ul class="dropdown-menu"> 
     <li><a href="/teachings/">All</a></li> 
     <li><a href="javascript: addElement(1, 'category=Coaching');">Coaching</a></li> 
     <li><a href="javascript: addElement(1, 'category=Conversation');">Conversation</a></li> 
     <li><a href="javascript: addElement(1, 'category=Craft');">Craft</a></li> 
     <li><a href="javascript: addElement(1, 'category=Creativity');">Creativity</a></li> 
    </ul> 
</div> 

Чтобы перейти к подготовленному URL нужно добавить еще один элемент, как, например, кнопка (или что-то еще с вызовом openUrl функции после щелчка мыши)

<input type="button" onclick="openUrl('?')" value="Go to URL"> 

И код JS для openUrl функции

function openUrl(prefix) { 
    var url = prefix + menus.join('&'); 
    document.location.href = url; 
} 
Смежные вопросы