PHP单选按钮检查是否为null

时间:2012-10-06 09:29:46

标签: php forms radio-button

所以我们得到这个学校的任务,我们需要检查其中一个字段是否未填充并显示错误。我们这样做但是由于一些奇怪的原因,当取消选中单选按钮时它不显示错误(文本字段空检查工作正常)。

我和朋友尝试了很多可能性,但他们似乎都没有工作。我们已经坚持了这个任务两个小时。现在我们尝试单独制作if,但这似乎也不起作用。

这些是重要的部分:

<p>
<input type="hidden" name="taal" value="false">
    Choose a language
<input type="radio" name="taal" value="N"> Dutch
<input type="radio" name="taal" value="E"> English
<input type="radio" name="taal" value="S"> Spanish

if (@$_POST['taal'] == null){
echo "No Language gotten";
return;
}

5 个答案:

答案 0 :(得分:9)

您可以省略隐藏的标记:

Choose a language
<input type="radio" name="taal" value="N"> Dutch
<input type="radio" name="taal" value="E"> English
<input type="radio" name="taal" value="S"> Spanish

使用isset()检查值是否已发送。如果未选中任何单选按钮,则taal将不会添加到已发布的数据中。因此,您必须检查是否已设置,您可以使用isset()执行此操作:

if (!isset($_POST['taal'])){
    echo "No Language gotten";
    return;
}

此外,在大多数情况下,建议使用@ operator。错误消息(警告,通知等)用于警告您代码中的问题。修复问题而不是隐藏它,或者它可能会回来并在以后咬你。

答案 1 :(得分:3)

if (!isset($_POST['taal']))  {

答案 2 :(得分:2)

那是因为它永远不会是空的。您为其指定了默认值"false"。检查:

if ($_POST['taal'] == "false") {
   //No language given
}

答案 3 :(得分:1)

隐藏元素中的值'false'是一个字符串,因此您应该将$_POST['taal'] == 'false'与其进行比较。

最好将此false元素设置为空字符串,然后将其与''进行比较。此外,我不建议使用@来抑制警告,请尝试以下操作:

if (!isset($_POST['taal']) || !$_POST['taal']) { ...

答案 4 :(得分:-1)

$data = ( isset( $_POST[ 'taal' ] ) ? $_POST[ 'taal' ] : '' );

有时候,使用如上所示的问号运算符会变得更加容易。