通过对照数据库进行检查来自动选中复选框


Auto check boxes by checking against the database

我有一个函数,它从数据库的类别表中构建一个类别列表:

我试图实现的是,当我编辑帖子时,如果该帖子属于该类别,它会自动勾选复选框。我有一个联接表,它接受帖子的id和类别的id,然后建立关联。我不知道从哪里开始?我是php的新手,但这里是我的尝试:

<?php
function build_cat_checkboxes(){
    global $dbc;
    global $id;
    $q1 = "SELECT cat_id FROM doc_cat_join WHERE doc_id = '$id'";
    $r1 = mysqli_query($dbc, $q1);
    var_dump($r1);    
    $q = "SELECT * FROM cats";
    $r = mysqli_query ($dbc, $q); //Run the query.   
    $currentDoc = $id;    
    while ($row = mysqli_fetch_array($r)) {
    $checked = (($row['cat_id'] == $currentDoc) ? 'checked' : '');    
    echo '<ul>
          <li><label>
            <input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '"  checked="'.$checked.'"> ' . $row["cat_name"] . '</label></li>
          </ul>';
    }    
}   
?>

所以现在我实际上通过检查doc_id和cat_id从联接表中得到了我期望的结果,它会计算行数,我有点拘泥于复选框的循环?

在循环中,根据您拥有的任何静态值检查当前的"cat_id",如果它们匹配,则将$checked设置为"checked"。

$currentCat = '123';
while ($row = mysqli_fetch_array($r)) {
    $checked = (($row['cat_id'] == $currentCat) ? 'checked' : '');
    echo '<ul>
          <li><label>
            <input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '"  checked="'.$checked.'"> ' . $row["cat_name"] . '</label></li>
          </ul>';
}