我有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来处理数组?
答案 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']));
}
然后我将该字符串写入数据库。
希望这有助于某人。