从mysql(php)正确检查复选框

时间:2018-08-26 16:31:01

标签: php html

我的复选框有问题。 我有一些您可以按类别过滤的项目。 所以问题是当您要编辑自动检查正确类别的项目时。 here you see a project but the categories are empty

在我的数据库中,我使用的是一个组合表-一个用于插入类别的表,一个用于项目的组合表,那里有一个组合表。

在这里您看到我的代码,用于显示checkboxes并选择进行编辑,所以现在我寻求帮助,以检查属于该项目的正确checkbox

<div id="categoriefilter">
  <?php     
  $sql = "SELECT * FROM `categories` ORDER BY `id` ASC";
  $cats = DB::getResult($sql);
  foreach($cats as $cat){
  ?>
  <label>
      <input name="cat[]" type="checkbox" value="<?php echo $cat['id']; ?>" >
      <?php echo $cat['categorienaam']; ?>
  </label>
  <?php
  }
  ?>
</div>

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题。您这里需要3张桌子

表1:projects id, name, ...
表2:categories id, name, ...
表3:projects_categories project_id, category_id, ...

需要第三张表来存储为项目选择的类别

在您的项目页面中
您需要执行以下操作:

  1. 通过ID选择您的项目
  2. 选择类别
  3. 从列表3中选择与项目相关的类别

这里是示例(这不是工作代码,只是展示)

//  your project
$project = DB::getResult("SELECT * FROM project WHERE id = :id "); // <== id here

// list of categories
$categories = DB::getResult("SELECT * FROM categories ");

// list of categories for this project
$project_categories = DB::getResult("SELECT category_id FROM projects_categories WHERE project_id = :project_id ");
$project_categories = (array) $project_categories; // in case DB::getResult is not array

<?php
    foreach($categories as $category) :
?>
<label>
    <input name="cat[]" 
        <?php if(in_array($category['id'], $project_categories)) echo 'checked="checked"'; ?>
        type="checkbox" value="<?= $category['id']; ?>" >
    <?php echo $category['name']; ?>
</label>
<?php endforeach; ?>

答案 1 :(得分:0)

我不是选民。如果您知道自己的问题,则可能不会发布该问题。

您不包括详细信息代码。但是据我所知,

您应该在UPDATE循环内运行数据库foreach查询。您无需将html input保留在循环中。

  <?php    
  // check if checkbox is checked 
  if (!empty($_POST['cat'])){   
  foreach($_POST['cat'] as $cat){
  // run update query here
  $sql = "UPDATE `categories` SET `categorienaam` = $whatever WHERE `id` = $cat";
  $result = DB::getResult($sql);
  }
  }
  ?>

  <label>
      <input name="cat[]" type="checkbox" value="<?php echo $RowOfApplicableSelectQuery['id']; ?>" >
  </label>

$RowOfApplicableSelectQuery来自您用于主要获取和显示记录的查询。

我希望它能为您提供有关所寻找内容的线索。