我只想让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
答案 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
(即使复选框已清除,它仍然存在)。