2016-11-02 5 views
0

これは簡単な試みだと思っていましたが、それは複雑になりました。

だから私は、以下を含むURLを取得しました:

enter image description here

ユーザーはゴミ箱アイコンをクリックしたときに、私は設定を解除_GET変数にしたい:

?mt-make=ford&mt-model=fiesta 

フォームは次のようになります。

<?php foreach ($_GET as $k => $v) { ?> 
<?php if ($k == 'mt-vehicle' || empty($v)) { continue; } ?> 
<li class="mt-search-tags-list-item"><a href="#"><?php echo $v; ?> <span class="dashicons dashicons-trash"></span></a></li> 
<?php } ?> 

どうすればよいですか?

は、私はそれがURLで_GETを上書きするだろうと考え、空の値でname="mt-make"とボタンを持つ代わりに、リンクのを試してみました - しかし、それはしませんでした!それは予想外だった。代わりに私はこれを持っていますか? mt-make=&mt-make=ford&mt-model=fiesta notice double mt-make

+1

PHPはサーバー側で実行されます。つまり、サーバー側で実行されるため、ユーザーに送信されます。 '$ _GET'変数は、ページがブラウザに表示されているときにはすでに「設定されています」と設定されていて、ページを変更しても「ライブ」で表示されるわけではありません。 URLを変更する理由はありますか?私たちはX-Y問題を見ているかもしれません。実際には、[JSを使用してクエリ文字列を更新する](http://stackoverflow.com/questions/1090948/change-url-parameters)、必要に応じて履歴にプッシュする必要があります。 – Terry

+0

@TerryはLIVEのやり方でそれを変更したくないことに気付きました。 「試しました」セクションにチェックを入れてください。 –

+0

あなたはまだJSを使用する必要があります。ごみ箱をクリックすると、 'mt-make'と' mt-model'の値を空にして、手動でフォームを送信します。その場合、値のないクエリ文字列、つまり '&mt-make =&mt-model ='が得られます。 – Terry

答えて

0

"ゴミ箱"リンクサーバー側を生成する必要があります。私はリンク生成を関数にカプセル化することをお勧めします。 ここにあなたのために何かを開始する。

function generateTrashUrl($propToExclude) 
{ 
    // Let's create an array from GET query 
    $queryParams = []; 
    parse_str($_SERVER['QUERY_STRING'], $queryParams); 

    if ($queryParams) { 

     // Now let's check if required parameter is in the array; if it is - get it out 
     if (array_key_exists($propToExclude, $queryParams)) { 
      unset($queryParams[$propToExclude]); 
     } 

     // Generate base of the resulting URL 
     $result = 'http://' . $_SERVER['HTTP_HOST']; 

     // Transform our modified parameters array into query string and append it to URL base 
     return $result .= http_build_query($queryParams); 

    } 
} 
関連する問題