0

语境

我正在开发一个带有复选框组的配置文件创建表单,该复选框组内爆并将逗号分隔的数组插入到 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']);

如果选中所有复选框,则数组如下所示:“Foo, Bar, Baz”

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

上面的代码有效。

我需要一个编辑配置文件页面,其中复选框组使用上面创建并插入 MySQL $profile_table 的数组进行预填充。

以“Foo”复选框为例,我相信答案使用了 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 从数组中填充复选框

提前致谢!

4

3 回答 3

2
$x=mysql_query("SELECT * FROM DB");
while($y=mysql_fetch_array){ 
echo "<input type='checkbox' name=".$y." value='Foo' >";
}
于 2013-10-22T19:56:55.523 回答
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 '/>';
}
于 2013-10-22T20:25:28.053 回答
0

感谢您确认我在球场上!我更多地使用该功能,并通过推断发现了我的错误。

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

Explode 创建一个数组,所以 array(explode... 是多余的。

我认为声明应该是:

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

于 2013-10-23T19:16:17.160 回答