我有一个使用查询字符串来检索数据的网站:
<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 :(得分:0)
以下代码没有重复&#39;如果您一直点击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>
答案 1 :(得分: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">
openUrl
函数的JS代码
function openUrl(prefix) {
var url = prefix + menus.join('&');
document.location.href = url;
}