首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP / HTML选择和取消选择链接以更改URL

PHP / HTML选择和取消选择链接以更改URL
EN

Stack Overflow用户
提问于 2015-01-26 10:03:49
回答 2查看 107关注 0票数 1

我有以下代码,其中显示了不同的状态名称:

代码语言:javascript
复制
$request = $_GET;
$array = Statuses('Porting', $behavior='');
foreach($array["results"] as $ret) {
    $sql="SELECT * from orders_porting where status = '".$ret["name"]."' ";
    $rs=mysql_query($sql,$conn);

    if($_GET[$ret["name"]] == '1') {
        unset($request[$ret["name"]]);
        $query = http_build_query($request);
        echo '<a href="?'.$query.'">';
    } else {
        echo '<a href="?'.$query.'&'.$ret["name"].'=1">';
    }
    echo '<div class="TicketsMenuTabs""';
    if($_GET[$ret["name"]] == '1') {
        echo ' id="active"';
    }
    echo '>'.$ret["name"].' ('.mysql_num_rows($rs).')</div></a>';
}

它显示的‘按钮’可以被点击,我希望能够取消点击他们也。

我已经在if语句中添加了unsethttp_build_query,但是如果选择了两个按钮,并且我再次单击其中一个按钮来取消选择,它们都变成un。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-26 10:43:57

在您的循环中,如果选择了每个链接,则当您到达(循环的末尾)时,您将取消所有设置。

试试这个:

  • 在取消$request变量中的链接后,执行输出,并使用来自$_GET的内容重置$request变量。
  • 不要忘记设置$query变量(请参阅Mickael中的anwer )

所以应该是这样的:

代码语言:javascript
复制
$request = $_GET;
$array = Statuses('Porting', $behavior='');
foreach($array["results"] as $ret) {
    $sql="SELECT * from orders_porting where status = '".$ret["name"]."' ";
    $rs=mysql_query($sql,$conn);

    if($_GET[$ret["name"]] == '1') {
        unset($request[$ret["name"]]);
        $query = http_build_query($request);
        $request = $_GET;
        echo '<a href="?'.$query.'">';
    } else {
        $query = http_build_query($request);
        echo '<a href="?'.$query.'&'.$ret["name"].'=1">';
    }
    echo '<div class="TicketsMenuTabs""';
    if($_GET[$ret["name"]] == '1') {
        echo ' id="active"';
    }
    echo '>'.$ret["name"].' ('.mysql_num_rows($rs).')</div></a>';
}

此外-在读取$_GET键之前,试着检查它是否存在-如下所示:

代码语言:javascript
复制
$request = $_GET;
$array = Statuses('Porting', $behavior='');
foreach($array["results"] as $ret) {
    $sql="SELECT * from orders_porting where status = '".$ret["name"]."' ";
    $rs=mysql_query($sql,$conn);

    if(isset($_GET[$ret["name"]]) && $_GET[$ret["name"]] == '1') {
        unset($request[$ret["name"]]);
        $query = http_build_query($request);
        $request = $_GET;
        echo '<a href="?'.$query.'">';
    } else {
        $query = http_build_query($request);
        echo '<a href="?'.$query.'&'.$ret["name"].'=1">';
    }
    echo '<div class="TicketsMenuTabs""';
    if(isset($_GET[$ret["name"]]) && $_GET[$ret["name"]] == '1') {
        echo ' id="active"';
    }
    echo '>'.$ret["name"].' ('.mysql_num_rows($rs).')</div></a>';
}

最后但并非最不重要的是--我不得不同意krzysiej的评论--不要使用mysql_*函数--它们是脱脂 --使用米斯里或pdo-mysql (抱歉--因为我的代表不能发布更多的链接--如果单击"depricated“链接,就会找到到pdo-mysql的链接)。

票数 3
EN

Stack Overflow用户

发布于 2015-01-26 10:26:15

在条件if($_GET[$ret["name"]] == '1')的其他部分中,变量$query没有被设置,因为您在这里设置了它:

代码语言:javascript
复制
if($_GET[$ret["name"]] == '1') {
    unset($request[$ret["name"]]);
    $query = http_build_query($request);
    echo '<a href="?'.$query.'">';
}

试试这个:

代码语言:javascript
复制
$query = http_build_query($request);

if($_GET[$ret["name"]] == '1') {
    unset($request[$ret["name"]]);
    echo '<a href="?'.$query.'">';
} else {
    echo '<a href="?'.$query.'&'.$ret["name"].'=1">';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28147971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档