检查PHP中是否勾选了至少1个复选框

时间:2013-03-06 20:17:00

标签: php arrays post checkbox

我有4个复选框,用户需要勾选1才能继续(但可能会更多)。所以我制作了4个复选框:

    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分隔?)。我将如何使用$ _POST来处理数组?

3 个答案:

答案 0 :(得分:3)

您可以尝试使用name="appearance[skin]"name="appearance[hair]"等,然后检查
if(empty($_POST['appearance']))还是不。如果它是空的,则没有选中复选框。

然后,您可以访问$_POST['appearance']['skin']等,或使用
foreach($_POST['appearance'] as $attribute=>$value)遍历选择。

答案 1 :(得分:0)

您可以将所有字段放入一个数组中,然后遍历该数组并设置一个标志:

$checkboxes = array('skin', 'hair', 'eyes', 'teeth');

$oneTicked = false;
foreach($checkboxes as $checkbox)
{
    if(!empty($_POST[$checkbox]))
    {
        $oneTicked = true;
        break;
    }
}

然后你可以检查$oneTicked是否为真。

答案 2 :(得分:0)

最后,我做了以下事情(很多人都在努力工作)。

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']));
}

然后我将该字符串写入数据库。

希望这有助于某人。