1

我有 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 个单独的 isset?)。我将如何使用 $_POST 处理数组?

4

3 回答 3

3

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

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

于 2013-03-06T20:19:01.067 回答
0

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

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

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

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

于 2013-03-06T20:25:47.780 回答
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']));
}

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

希望这可以帮助某人。

于 2013-03-06T22:02:27.850 回答