我已经想出了足够远的方法来循环浏览我的表并返回将与产品匹配的复选框列表。我现在的问题是,在选择它们并将其作为给定产品的选中/未选中返回后,我无法找出正确的方法来循环它们。以为涉及一些MySQL,那部分不是问题,我知道如何插入数据库或更新...从下拉列表中选择产品时,我需要能够填充复选框。
这是我用来最初显示所有可供选择的类别的代码......
<ul class="categories">
<?php
$query = "SELECT * FROM products";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
$category = $row['category'];
$catId = $row['id'];
echo "<li><input class='catCheck' type='checkbox' name='p_cat[]' value='$catId' /> $category</li>";
}
?>
</ul>
- 您应该为每个复选框指定自己的名称。例如,p_cat1、p_cat2、...
- 然后,您必须记住您为复选框指定的名称。例如,如果名称为p_cat1、p_cat2、...,则必须知道复选框的计数。因此,您应该将此计数放在隐藏字段中或再次从数据库中检索它。
- 如果要设置复选框的选中状态,则必须使用"选中"html属性,而不是"值":
.
echo "<li><input class='catCheck' type='checkbox' name='p_cat[]' ".($is_checked? " checked " : "")."/> $category</li>";
- 当请求来自客户端时,您应该手动遍历所有 $_POST["p_cat$i"] 变量并使用 isset($_POST["p_cat$i"] 之类的东西获取状态。
在HTML页面中这样做
echo "<li><input class='catCheck' type='checkbox' name='p_cat['.$row['id'].']' value='$catId' /> $category</li>";
在后端这样做
$delete = $_POST['p_cat'];
foreach ($delete as $id => $val) {
if($val=='checked'){
$query="DELETE FROM TABLE WHERE id = '".$id."'";
$result= mysqli_query($connection, $query) or die("Invalid query");
}
}