存储在db中的数组的php输出复选框然后显示如果选中则显示

时间:2012-09-24 04:20:39

标签: php mysql arrays checkbox

我提交了一堆复选框,将值(如果选中)添加到数组并序列化,然后保存在我的数据库中。

现在,我想在编辑页面上显示复选框,并选中相应的复选框。

我目前正在输出复选框......

HTML

6 w <input type="checkbox" name="size[]" value="6 w">
7 w <input type="checkbox" name="size[]" value="7 w">
8 w <input type="checkbox" name="size[]" value="8 w">

我已经尝试回显一个已检查的值,但不确定如何检查正确的值。这是我遇到的一个网站的一个建议......

HTML

6 w <input type="checkbox" name="size[]" value="6 w" <? echo $checked['6 w'] ?> >
7 w <input type="checkbox" name="size[]" value="7 w" <? echo $checked['7 w'] ?> >
8 w <input type="checkbox" name="size[]" value="8 w" <? echo $checked['8 w'] ?> >

PHP

$size = unserialize($row["size"]);        
$array = "";
foreach($size as $size_available)
{
  $array .= "$size_available,";
}
  $array_explode = explode(',',$array);

    //$checked = "";
    foreach ($array_explode as $v){
    $checked[$v] = "checked='CHECKED'";
}

这几乎可以显示正确的复选框已选中,但未存储在数组中的任何复选框都会显示未定义的索引错误。我猜是因为它输出一个空变量???

有什么建议可以从这里开始,或者如何更好地做到这一点?

干杯

2 个答案:

答案 0 :(得分:1)

在使用isset() -

访问索引之前验证是否已设置索引
<? echo (isset($checked['8 w']))? $checked['8 w'] : "" ?>

答案 1 :(得分:0)

改变这个:

foreach($size as $size_available)

为此:

foreach($_REQUEST['size'] as $size_available)

不需要unserialize命令。