使用PHP,从MySQL字段中检索数组并使用它来填充复选框组

时间:2013-10-22 19:47:01

标签: php mysql arrays checkbox explode

CONTEXT

我正在开发一个配置文件创建表单,其中包含一个复选框,它将逗号分隔的数组内插并插入到MySQL表中($ profile_table)。

<input type="checkbox" name="check_group[]" value="Foo" /> Foo<br />
<input type="checkbox" name="check_group[]" value="Bar" /> Bar<br /> 
<input type="checkbox" name="check_group[]" value="Baz" /> Baz<br />

$insert_array = implode(", ", $_POST['check_group']);

如果选中所有复选框,则数组如下所示:&#34; Foo,Bar,Baz&#34;

$insert_profile_query = "INSERT INTO profile_table
(check_group_field)VALUES ('".$insert_array."')";   
$profile_query_qs = db_query($insert_profile_query);

上面的代码可以使用。

我需要一个编辑个人资料页面,其中使用上面创建的数组预先填充复选框组并插入MySQL $ profile_table。

使用&#34; Foo&#34;以复选框为例,我相信答案使用的是in_array条件,并且接近:

<input type="checkbox" name="check_group[]" value="Foo"
<? $my_array = array(explode(", ", $profile_table['check_group_field'])); 
if (in_array("Foo", $my_array)) {echo 'checked="checked"';}?> /> Foo<br />

问题

具体来说,从MySQL $ profile_table.check_group_field获取数组的最佳函数是什么,所以我可以在in_array条件中使用它作为$ my_array来预先填充复选框组中的复选框?我需要先爆炸阵列吗?

示例资源

以下是我引用的众多资源的示例;但是,我没有找到我需要解决的具体问题:

http://us1.php.net/in_array http://www.sitepoint.com/forums/showthread.php?577188-Retrieving-A-Checkbox-Array-from-MySql Populate checkbox from array

提前致谢!

3 个答案:

答案 0 :(得分:2)

$x=mysql_query("SELECT * FROM DB");
while($y=mysql_fetch_array){ 
echo "<input type='checkbox' name=".$y." value='Foo' >";
}

答案 1 :(得分:0)

我会将复选框的值存储在一个数组中并运行foreach中的所有选项,并以与您使用的方式类似的方式检查值是否在数组中。

$options=array('Foo', 'Bar', 'Baz');
$my_array = array(explode(", ", $profile_table['check_group_field']));
foreach($options as $option){
    echo '<input type="checkbox" name="check_group[]" value="'.$option.'" ';
    if(in_array($option, $my_array)){
        echo 'checked="checked"';
    }
    echo '/>';
}

答案 2 :(得分:0)

感谢您确认我在球场!我玩了更多功能,并通过演绎找到了我的错误。

$ my_array = array(explode(“,”,$ profile_table ['check_group_field']));是错的。

爆炸创建一个数组,所以数组(爆炸......是多余的。

我认为声明应该是:

$ my_array =(explode(“,”,$ profile_table ['check_group_field']));