2016-07-21 3 views
3

Ich habe eine Website, die Abfrage-Strings verwendet die Daten abzurufen, etwa so:Fügen Sie weitere Anfragen an url über den Link

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

Es funktioniert großartig die Daten bekommen wie:

teachings/?sort=SORT_NAME_ASC 

oder

teachings/?category=Creativity 

aber ich kann beide wie tun:

teachings/?category=Creativity&sort=SORT_NAME_ASC 

Ich kann mir nicht vorstellen, wie ich das hinzufügen soll. Wenn ich nur den Streifen anhefte, wird es ein Durcheinander.

Antwort

0

Der folgende Code "dupliziert" nicht die Werte in der URL, wenn Sie weiterhin auf category oder sort klicken. Es wurde zum Kopieren/Einfügen und Ausführen erstellt.

// 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> 

können Sie haben auch einen Code alle diejenigen zu entfernen. Fügen Sie es direkt nach dem vorherigen Code hinzu (auch Kopieren/Einfügen). Werfen Sie einen Blick auf:

<?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

vielleicht möchten Sie die Funktionsnamen xD sich ändern – FirstOne

0

Jetzt für Ihr Drop-Down-Element eine einfache Aktion - gehen Sie zur bereitgestellten URL. Wenn Sie einige Werte auswählen möchten, sollten Ihre Elemente den ausgewählten Wert anstelle der offenen URL speichern. Dies können Sie zum Beispiel mit diesem JS-Code tun.

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

Der obige Typ ist der Nummernindex Ihres Menütyps. Zum Beispiel 0 kann für die Sortierung und 1 für die Kategorie sein - das ist dafür sorgen, dass Sie nur einen Wert aus dem Menütyp auswählen können. Jetzt können Sie Ihren Code mit so etwas wie diese

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

ersetzen, um die vorbereiteten URL gehen Sie ein anderes Element wie zum Beispiel einer Taste (oder etwas anderes mit Aufruf openUrl Funktion nach Mausklick) hinzufügen müssen

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

Und der JS-Code für openUrl Funktion

function openUrl(prefix) { 
    var url = prefix + menus.join('&'); 
    document.location.href = url; 
} 
Verwandte Themen