从数据库中选中复选框

时间:2015-05-26 17:34:32

标签: php html checkbox

如果他们被分配到数据库中的类别,我会寻找一种方法来检查勾选框。

<?php 


try{
    // Selecting entire row from cat_list table
    $results = $dbh->query("SELECT cat_id, cat_title FROM cat_list");

}catch(Exception $e) {
    echo $e->getMessage();
    die();
}
    $category = $results->fetchAll(PDO::FETCH_ASSOC);
?>

<br>
<label><input type="checkbox" name="" class="selectall"/> Select all</label>
<div id="checkboxlist" >
<?php
    foreach($category as $cat){ 
?>

<input type="checkbox" value="<?php echo $cat["cat_id"];  ?>" <?php echo ($cat['cat_id'] == 1) ? 'checked="checked"' : ''; ?> name="cat_no[]" id="box1"> <?php echo $cat["cat_title"]; ?></a><br>

<?php
}

所以当我创建帖子时,我从显示为数组的可用类别中选择,上面的代码是从我的编辑帖子表单中获取的,所以我希望它检索我分配给它的类别并勾选方框。

我有3张桌子:

doc_list (Stores documents)
cat_list (Stores Categories)
cat_doc_link_table (stores the doc_id & cat_id from the previous two tables)

以下是它们的形成方式:

CREATE TABLE `cat_doc_link_table` (
`id` int(11) NOT NULL,
  `link_cat_id` int(11) NOT NULL,
  `link_doc_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `cat_list` (
`cat_id` int(11) NOT NULL,
  `cat_title` varchar(32) NOT NULL,
  `cat_color` varchar(20) NOT NULL,
  `cat_icon` text NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=utf16 AUTO_INCREMENT=66 ;

CREATE TABLE `doc_list` (
`doc_id` int(11) NOT NULL,
  `doc_title` varchar(50) NOT NULL,
  `doc_content` text NOT NULL,
  `doc_created` datetime NOT NULL,
  `user_id` int(11) NOT NULL,
  `doc_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB  DEFAULT CHARSET=utf16 AUTO_INCREMENT=295 ;

1 个答案:

答案 0 :(得分:1)

将选定的cat_id放入数组()中。然后使用in_array()来检查。

// query your db to return an array of cat_id's for the specified post.
$cats_array = array('123', '124', '156');

foreach($category as $cat){
 // compare
 if(in_array($cat['cat_id'], $cats_array)) { 
   // cat checked
 }else{
   // not checked
 }
}