列出用户在php中检查所有类别的类别

时间:2016-05-24 08:35:58

标签: php html mysql

我正在处理一个用户表单,其中包含一些类别,其填写为我的表单中的复选框

<td><input type="checkbox" name="category[]" value="1"> CCTV &nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td><input type="checkbox" name="category[]" value="2"> Access Control &nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td><input type="checkbox" name="category[]"value="3"> Fire Alarm &nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td><input type="checkbox" name="category[]" value="4"> Intrusion Alarm System &nbsp;&nbsp;&nbsp;&nbsp;</td>

我将这样的类别存储为db中的逗号分隔字符串

$category=implode(',',$_POST['category']);

此错误显示在view my category页面中,在此页面中,我想显示所有类别,其中用户选择的类别已选中(如果用户为CCTV类别,则选择它应该显示为标记为), 但我不知道如何实现这个?

这是我的代码,它显示所有没有用户选中值的类别

<?php
//fetch user checked category from db and convert to array.
$user_cat=explode(',',$value['category']); //eg;array(5,6,8)
//all categorys value
$all_cat_value=array('1','2','3','4','5','6','7','8');
$all_cat_txt=array('CCTV','Acess controle'....,'Fire alaram');

//populates all category with checked value
for each($all_cat_txt as $key=>$val){
    echo '<input type="checkbox" value="'.$[$all_cat_value][$key].'">'.$val;
}

注意:$all_cat_value$all_cat_txt的长度相同

1 个答案:

答案 0 :(得分:0)

使用in_array()并查找数组中是否存在检查值。如果找到,则在复选框中添加checked属性。

//fetch user checked category from db and convert to array.
$user_cat=explode(',',$value['category']); //eg;array(5,6,8)
//all categorys value
$all_cat_value=array('1','2','3','4','5','6','7','8');
$all_cat_txt=array('CCTV','Acess controle',....,'Fire alaram');

//populates all category with checked value
foreach($all_cat_txt as $key=>$val){
    $checked = "";
    if(in_array($all_cat_value[$key], $user_cat))
    {
        $checked = "checked";
    }
    echo '<input type="checkbox" value="'.$all_cat_value[$key].'" '.$checked.'>'.$val;
}