Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过对数据库进行检查来自动选中复选框_Php_Mysql - Fatal编程技术网

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

Php 通过对数据库进行检查来自动选中复选框,php,mysql,Php,Mysql,我有一个函数,可以从数据库的categories表中构建类别列表: 我试图实现的是,当我来编辑它时,如果那篇文章属于那个类别,它会自动勾选复选框。我有一个连接表,它接受帖子的id和类别的id,然后进行关联。我不知道从哪里开始?我对php相当陌生,但以下是我的尝试: <?php function build_cat_checkboxes(){ global $dbc; global $id; $q1 = "SELECT cat_id FROM doc_cat_j

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

我试图实现的是,当我来编辑它时,如果那篇文章属于那个类别,它会自动勾选复选框。我有一个连接表,它接受帖子的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>';
    }    
}   

?>

在循环中,根据您拥有的任何静态值检查当前的“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>';
}
$currentCat='123';
while($row=mysqli\u fetch\u数组($r)){
$checked=($row['cat_id']==$currentCat)?'checked':'';
回声'
  • “.$row[“cat_名称”]”
'; }
好的,我知道你在这里做什么了-而不是$currentCat我实际上在一个页面上,我正在编辑我的文章,并且类别是checkboxesHm好的,所以它们现在被选中了,但是如果我编辑文档并将其从类别中移除,它仍然显示为勾选状态?复选框值只有在被选中时才会被提交。因此,在更新时,首先删除所有复选框值,然后在表单中插入提交的行。这是真的-它像以前一样工作-如果我检查它们,它会将它们放入联接表中,如果我将它们拿走,它们会从联接表中删除,但即使行存在或不存在,它们也会自动勾选-是否应该查看联接表?您可能需要2个查询。一个从“cats”表中获取类别详细信息(将返回1行),然后一个从“doc\u cat\u join”表中获取(将返回多行)。