我有一个表单,人们需要提交信息。这部分代码没有按照我想要的方式工作,我不知道为什么…
if (!isset($_POST['maandag']) && !isset($_POST['dinsdag']) && !isset($_POST['geenvoork']))
{
echo "Je bent vergeten in te vullen wanneer je aanwezig bent.";
}
帖子在表单的其余部分工作,并且是正确的。我想要检查的是这3个复选框是否没有被选中。我做错了什么?
您可以尝试做一个print_r($_POST)
,看看字段的值是什么。这可以帮助您确定提交/字段值发生了什么。
如果它们在您的表单中,那么它们将被设置。您可能想要检查它们是否为假。以下是其中一个,您可以将其他组合起来:
if( !isset($_POST['maandag']) || !$_POST['maandag'] ) {
// do something
}
其次,这样的代码意味着只有当none复选框被设置时,您才会得到消息。我不确定,但如果你试图抛出一个错误消息,你不希望它,如果其中任何一个没有设置?在这种情况下,您需要||
(或)而不是&&
(和)。
你的编码让事情变得复杂。,,
try like
<input type="checkbox" name="test[]" value="1"/>
<input type="checkbox" name="test[]" value="2"/>
<input type="checkbox" name="test[]" value="3"/>
提交值并获取结果
在HTML中为你的复选框设置合适的值。
<input type="checkbox" ... value="1">
你目前接受的解决方案只是使PHP代码复杂化。
我刚刚对我正在使用的复选框进行了检查,以下是值:
<input id="Isolated1" type="checkbox" value="1" name="Isolated1"></input>
如果输入被选中,下面的计算结果为:
isset( $_POST["Isolated1"] )
//True
( $_POST["Isolated1"] )
//True
当输入不被检查时:
isset( $_POST["Isolated1"] )
//False
( $_POST["Isolated1"] )
//Notice: Undefined index
因此,我建议使用empty()函数,同时检查变量是否不存在或其值是否为FALSE
正如prisoner所说,您需要检查它是否为空(),尽管如果它根本没有设置,这可能会给您一个通知。
您的if要求:
isset($_POST['checkbox']) && !empty($_POST['checkbox'])
编辑:愚蠢的我,你的权利,它不返回任何东西。用下面的print_r检查你的帖子听起来是最好的选择。
实际上应该可以…
你总是可以为你的复选框设置一个值,并特别检查该值是否返回:
<input type="checkbox" name="maandag" value="1"/>
<?php if(isset($_POST['maandag']) && $_POST['maandag'] != '1') { /* ... */ }