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

PHP/HTML选择和取消选择链接以更改URL,php,html,Php,Html,我有以下代码,其中显示了不同的状态名称: $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["n

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

$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>';
}
$request=$\u GET;
$array=status('Porting',$behavior='');
foreach($array[“results”]作为$ret){
$sql=“从订单中选择*_-porting,其中状态=”$ret[“name”]。”;
$rs=mysql\u查询($sql,$conn);
如果($_GET[$ret[“name”]]=='1'){
取消设置($request[$ret[“name”]]);
$query=http\u build\u query($request);
回声';
}
它显示了可以点击的“按钮”,我也希望能够取消点击它们


我已经在if语句中添加了
unset
http\u build\u query
,但是如果选择了两个按钮,我再次单击其中一个按钮取消选择它,那么在条件
if($\u GET[$ret[“name”]='1')的else部分中,它们都会变成未选择的
未设置变量
$query
,因为您在此处设置了它:

if($_GET[$ret["name"]] == '1') {
    unset($request[$ret["name"]]);
    $query = http_build_query($request);
    echo '<a href="?'.$query.'">';
}
if($\u GET[$ret[“name”]]==“1”){
取消设置($request[$ret[“name”]]);
$query=http\u build\u query($request);
回声';
}
试试这个:

$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">';
}
$query=http\u build\u query($request);
如果($_GET[$ret[“name”]]=='1'){
取消设置($request[$ret[“name”]]);
回声';
}否则{
回声';
}

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

试试这个:

  • 在取消设置$request变量中的链接后,执行输出并使用$\u GET中的内容重置$request变量
  • 别忘了设置$query变量(参见Mickeel的答案)
所以它应该是这样的:

$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>';
}
$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>';
}
$request=$\u GET;
$array=status('Porting',$behavior='');
foreach($array[“results”]作为$ret){
$sql=“从订单中选择*_-porting,其中状态=”$ret[“name”]。”;
$rs=mysql\u查询($sql,$conn);
如果($_GET[$ret[“name”]]=='1'){
取消设置($request[$ret[“name”]]);
$query=http\u build\u query($request);
$request=$\u GET;
回声';
}
另外-在读取之前尝试检查$\u GET中的键是否存在-如下所示:

$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>';
}
$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>';
}
$request=$\u GET;
$array=status('Porting',$behavior='');
foreach($array[“results”]作为$ret){
$sql=“从订单中选择*_-porting,其中状态=”$ret[“name”]。”;
$rs=mysql\u查询($sql,$conn);
如果(isset($\u-GET[$ret[“name”]])&&&$\u-GET[$ret[“name”]]]=='1'){
取消设置($request[$ret[“name”]]);
$query=http\u build\u query($request);
$request=$\u GET;
回声';
}

最后但并非最不重要的是——我必须同意krzysiej的评论——不要使用mysql_*函数——它们是——使用或pdo mysql(很抱歉,由于我的代表,不能发布超过两个链接——如果你点击“去擦伤”链接,你会找到pdo mysql的链接)

首先,不要使用mysql_*函数。