从数据库中获取选中的复选框

get checked checkboxes from database

我正在寻找一种方法来检查复选框是否已分配给数据库中的类别。

<?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
}

因此,当我从显示为数组的可用类别创建 post I select 时,上面的代码取自我的编辑 post 表单,所以我想要它检索我分配给它的类别并勾选方框。

我有 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 ;

将选定的 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
 }
}