所以我们得到这个学校的任务,我们需要检查其中一个字段是否未填充并显示错误。我们这样做但是由于一些奇怪的原因,当取消选中单选按钮时它不显示错误(文本字段空检查工作正常)。
我和朋友尝试了很多可能性,但他们似乎都没有工作。我们已经坚持了这个任务两个小时。现在我们尝试单独制作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;
}
答案 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' ] : '' );
有时候,使用如上所示的问号运算符会变得更加容易。