【问题标题】:Multiple checkboxes update in DB with ENUM and Custom column数据库中的多个复选框使用 ENUM 和自定义列更新
【发布时间】:2016-05-31 23:50:18
【问题描述】:

我有一个表格,其中自定义列由管理员制作,每列都有自己的枚举,带有“0”、“1”。在这里您可以选择该列是真还是假。

现在我想要一个选项,管理员可以通过一个复选框来更新这个 true 或 false。

复选框。

<div class="col-sm-9">
    <?php
    if(isset($produci[0])) {
    foreach($produci as $key => $avlue) {
    ?>
    <div class="row-fluid">
       <label>
           <input name="clickedproduct[]" type="checkbox" value="<?php echo $avlue['name']; ?>" <?php echo (($_SERVER['REQUEST_METHOD'] == 'POST') ? ((isset($_POST[$avlue['name']])) ? ' value="'.$avlue[$avlue['name']].'" checked' : ' value="'.$avlue[$avlue['name']].'"') : (($avlue[$avlue['name']] == '1') ? ' value="'.$avlue[$avlue['name']].'"checked' : ' value="'.$avlue[$avlue['name']].'"')); ?>>
           <?php echo $avlue['name']; ?>
      </label>                                    
    </div> 
    <?php } }else{
                  echo '<font color="red">Er zijn nog geen producten aangemaakt.</font>';
                 } ?>                           
</div>

我的 PDO。

if(isset($_POST['clickedproduct']))
  {  $values = array();
  foreach($_POST['clickedproduct'] as $access )
  { 
    $clickedproduct = '0'; // = bijv. 1 of 0
    $column = $access; // = bijv. product
  } // end of foreach.


    $product_access = $dbh->prepare("UPDATE products_access SET `{$column}` = :enum WHERE products_access.id = :id");
    $product_accessvar = trim($user['id']);
    $product_access->bindParam(':id', $product_accessvar, PDO::PARAM_INT);
    $product_access->bindParam(':enum', $clickedproduct, PDO::PARAM_INT); 
    $product_access->execute();
}

有人有解决办法吗?

【问题讨论】:

    标签: php mysql checkbox pdo enums


    【解决方案1】:

    您应该通过以下方式切换您的 ENUM 列。

    UPDATE table_name SET column_name = IF(column_name=1, 0, 1);
    

    在您的代码中,

    $sql = "UPDATE products_access SET  `{$column}` = IF( `{$column}`=1, 0, 1) WHERE products_access.id = :id";
    $product_access = $dbh->prepare($sql);
    $product_accessvar = trim($user['id']);
    $product_access->bindParam(':id', $product_accessvar, PDO::PARAM_INT);
    //$product_access->bindParam(':enum', $clickedproduct, PDO::PARAM_INT); 
    $product_access->execute();
    

    【讨论】:

    • 我已经稍微编辑了你的代码,但是我现在遇到的问题是列枚举在 1 时更改为 0,但是当它为 1 时,他将删除枚举并且什么都不给我。
    • 有一个问题,checkbox是否勾选需要勾选,因为现在select的时候他会判断是true还是false,相等的时候再修改。跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 2015-05-26
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    相关资源
    最近更新 更多