【问题标题】:Using Checkboxes with PHP/MySQL Data对 PHP/MySQL 数据使用复选框
【发布时间】:2012-04-14 17:37:11
【问题描述】:

我已经想出足够多的方法来遍历我的表格并返回将与产品匹配的复选框列表。我现在的问题是,我无法找出在选择它们后循环遍历它们的正确方法,并将它们作为给定产品的选中/未选中返回。认为涉及到一些 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>

【问题讨论】:

  • 你想做什么?你的描述不是很清楚。
  • 您是否尝试根据查询返回的结果选中/取消选中复选框?
  • products 表中是否有代表checked/unchecked 状态的字段?
  • 验证和保留动态复选框的状态:stackoverflow.com/questions/9887764/…

标签: php mysql checkbox


【解决方案1】:
  • 您应该为每个复选框指定自己的名称。例如,p_cat1、p_cat2、...
  • 那么你必须记住你给复选框起的名字。例如,如果名称是 p_cat1、p_cat2、...,您必须知道复选框的数量。因此,您应该将此计数放在隐藏字段中或再次从数据库中检索它。
  • 如果你想设置复选框的选中状态,你必须使用“checked”html属性,而不是“value”:

.

echo "<li><input class='catCheck' type='checkbox' name='p_cat[]' ".($is_checked? " checked " : "")."/> $category</li>";
  • 当请求来自客户端时,您应该手动遍历所有 $_POST["p_cat$i"] 变量并使用类似 isset($_POST["p_cat$i"]) 的方式获取状态。

【讨论】:

    【解决方案2】:

    在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");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2018-04-04
      • 2016-12-14
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      相关资源
      最近更新 更多