我有一个函数,它从数据库的类别表中构建一个类别列表:
我试图实现的是,当我编辑帖子时,如果该帖子属于该类别,它会自动勾选复选框。我有一个联接表,它接受帖子的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>';
}