通过按钮

时间:2016-11-02 21:47:40

标签: php

我认为这将是一项轻松的尝试,但事实证明这很复杂。

所以我有一个以下获取的网址:

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

表格如下:

enter image description here

因此,当用户点击“垃圾箱”图标时,我想取消设置_GET变量。

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

怎么会这样做?

我尝试而不是带有name="mt-make"的按钮的链接,其值为空值,认为它会覆盖网址中的_GET - 但它没有!那是出乎意料的。相反,我得到了这个?mt-make=&mt-make=ford&mt-model=fiesta通知双mt-make

1 个答案:

答案 0 :(得分: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);

    }
}