确定复选框是否已检查php $ _GET

时间:2010-08-15 16:44:14

标签: php get

我只想让php确定是否选中了复选框,但我遇到了获得正确返回的问题。请帮助。

我的HTML代码

    <label>
    <input name="Language" type="checkbox" id="aa"  checked="checked"  />
    One</label>
    <label>
    <input name="Language" type="checkbox" id="bb" />Two</label>
    <label>
   <input type="checkbox" name="Language"  id="cc" />Three</label>

我通过$ _GET方法将值传递给php

我的PHP代码:

$aa=$_GET["aa"];
$bb=$_GET["bb"];
$cc=$_GET["cc"];


echo $aa."<br>";
echo $bb."<br>";
echo $cc."<br>";

输出是 真正 假 假

我接下来想确定是否检查每个方框,如果是,请做一些事情。

if ($aa == true) { $abc="checked";}
else { $abc="not checked"; }

if ($bb == true) { $cde="checked";}
else { $cde="not checked"; }


if ($fgh == true) { $fgh="checked";}
else { $fgh="not checked"; }

但if语句总是返回true,即使未选中该框。我尝试了“===”和“!=”的变体,但它似乎不起作用。

TIA

3 个答案:

答案 0 :(得分:4)

if (isset($_GET['checkbox_name'])) { ... }

表单控件(文件输入除外,并且对图像输入有一些特殊规则)始终提交字符串。查询字符串或表单编码的POST正文中没有布尔值的概念。

id是无关紧要的 - 只有名称和值很重要(至少就PHP而言)。

由于你没有给他们提供价值,因此他们会默认为on,所以如果你进行比较,你应该寻找它。使用isset查看更简单。这有点不合时宜,因为你的例子给出了它们所有相同的名称和值,所以你无法区分它们。

此外,由于PHP表单数据解析器的奇怪性,如果您想要多个具有相同名称的元素,则必须以[]结尾。

你可能想做这样的事情:

<label>
<input name="Language[]" type="checkbox" id="aa"  checked="checked" value="One" />
One</label>
<label>
<input name="Language[]" type="checkbox" id="bb" value="Two" />Two</label>
<label>
<input type="checkbox" name="Language[]"  id="cc" value="Three" />Three</label>

重要:请注意添加值和名称更改。

然后在PHP中$_GET['Language']将是一个已选中复选框值的数组,您可以循环它。

答案 1 :(得分:1)

尝试isset()

我认为您的HTML代码应该像

<label>
  <input name="Language[]" type="checkbox" id="aa" checked="checked" value ="1" />One    
</label>
<label>
  <input name="Language[]" type="checkbox" id="bb" value ="2" />Two
</label>
<label>
  <input name="Language[]" type="checkbox"  id="cc" value ="3" />Three
</label>

然后使用

之类的东西

$count = count($_GET["Language"]);您可以统计选中的复选框数量。

或者做

$arr = $_GET["Language"]; //$arr is an array that contains the values of the checked checkboxes

然后你可以在数组上foreach

   foreach( $arr as $item)
   {
        echo $item . "</br>"; /* Will print 1,2 and 3 (mind newlines)*/
   }

答案 2 :(得分:0)

在我的PHP中,我从$_POST['checkbox_name']得到了它,并且在检查框时我发现该变量的值为on(即使复选框已清除,它仍然存在)。