2012-08-04 103 views
-1

我想插入一个复选框是否选择到MySQL中,只需在对应于该值的列中添加1或0即可。我遇到了0的问题,详情如下。循环遍历复选框PHP

下面是添加此

$classes = $_POST["class"]; 

这里是foreach循环检查复选框的值的复选框

<input type='checkbox' name='class[]' value='mathhl' id="mathhl"> 

为了简单的例子。

foreach($classes as $value) { 
    if (!isset($value)) { 
     $value = 0; 
    } 
    else { 
     $value = 1; 
    } 
    echo $value; 
} 

由于某种原因,它只返回1s,而不是0s!我是PHP新手,所以我想知道我到底在哪里出错,谢谢!

回答

5

只有选中的复选框才会发送到服务器。所以,如果该值不存在于数组中,那是因为该框未被检查。

你可以通过你的数组中作出值的按键简化你的逻辑:

<input type='checkbox' name='class[mathhl]' value='1' id="mathhl"> 

现在,你不必遍历$_POST['class']。相反,你可以把所有的按键阵列(你应该已经知道了):

$keys = array('mathh1', 'mathh2', 'mathh3'); 

,并形成与默认值的数组(比如0):

$defaults = array_combine($keys, array_fill(0, count($keys), 0)); 

并合并$_POST阵列与默认数组:

$results = array_merge($defaults, $_POST['class']); 

现在,$results将包含一个关联数组,与所述键在列和值是1或0,这取决于是否吨他的复选框被检查。要小心,因为有人可以发布和他们想要的数据$_POST,所以它可能不只是1和0。

+0

有没有什么办法可以将0分配给未勾选的复选框? – 2012-08-04 18:55:40

+0

@AlexCastro:复选框的值是否遵循任何特定的模式?他们需要预设,然后您可以检查它们是否存在。 – Ryan 2012-08-04 18:58:07

+0

复选框分为几组,您可以在这里看到:http://forhomework.info/valid.php – 2012-08-04 19:14:46