检查PHP中是否至少勾选了1个复选框
我有4个复选框,用户需要勾选1才能继续(但可能会打勾更多)。所以我做了4个复选框:检查PHP中是否至少勾选了1个复选框
I have blue skin
<input class="cbox" type="checkbox" name="skin" value="Yes" /><br>
I have blue hair
<input class="cbox" type="checkbox" name="hair" value="Yes" /><br>
I have blue eyes
<input class="cbox" type="checkbox" name="eyes" value="Yes" /><br>
I have blue teeth
<input class="cbox" type="checkbox" name="teeth" value="Yes" /><br>
我期待存储这些数据。但首先,我确认至少检查了其中一个。
if(isset($_POST['sent']) && !(isset($_POST['skin']) || isset($_POST['hair']) || isset($_POST['eyes']) || isset($_POST['teeth'])))
我不确定这是实现这一目标的最佳方法,因为我想存储所有这些列表。我想最好的方法是使用数组。
I have blue skin
<input class="cbox" type="checkbox" name="blue[]" value="skin" /><br>
并将其存储在文本字段中,使其崩溃。作为新人,我不确定如何实现这一点,我正在阅读的教程有点混乱。这样做会允许我检查数组是否为空(而不是4个独立的isset?)。我将如何使用$ _POST处理数组?
最后,我做了以下工作(围绕它做了大量的工作)。
I have blue skin
<input class="cbox" type="checkbox" name="blue[]" value="skin" /><br>
所有4个使用相同的方法。然后...
if(isset($_POST['sent']) && empty($_POST['blue'])) {
$bluedata = mysql_escape_string(implode(",",$_POST['blue']));
}
然后我写了那个字符串到数据库。
希望这可以帮助别人。
您可以尝试使用name="appearance[skin]"
,name="appearance[hair]"
等,然后检查if(empty($_POST['appearance']))
与否。如果它是空的,那么没有选择复选框。
然后,您可以访问$_POST['appearance']['skin']
等等,或使用foreach($_POST['appearance'] as $attribute=>$value)
遍历选择。
你可以把所有的字段到一个数组,然后遍历数组,并设置一个标志:
$checkboxes = array('skin', 'hair', 'eyes', 'teeth');
$oneTicked = false;
foreach($checkboxes as $checkbox)
{
if(!empty($_POST[$checkbox]))
{
$oneTicked = true;
break;
}
}
然后,你可以检查是否$oneTicked
是真实的。
导致未发送的每个变量的未定义索引通知。相反,只考虑在$ checkboxes数组中保存键名,然后检查if(empty($ _ POST [$ checkbox]))'。当找到一个匹配项时,还要考虑'从循环中断开,因为没有必要继续搜索。 – 2013-03-06 20:26:31
好主意!我已经更新了我的答案,谢谢。 – Jamesking56 2013-03-06 20:28:25
如果没有点击复选框,那么'$ _POST ['appearance']'根本就不应该存在,即不会设置为空数组。但是在这两种情况下,检查'empty($ _POST ['appearance'])'是真的。 – feeela 2013-03-06 20:24:13
@feeela是的,这就是我的意思XD将编辑澄清。 – 2013-03-06 20:25:13