$ wpdb更新多个复选框

时间:2019-03-09 06:22:05

标签: wordpress

我尝试更新wordpress中包含复选框的多行(如果选中1否则为0),但无法正常工作。我有3行:

+---------+-----------+-------------+
| dept_id | dept_name | dept_status |
+---------+-----------+-------------+
|       1 | Services  |           1 |
|       2 | Products  |           0 |
|       3 | Users     |           0 |
+---------+-----------+-------------+

如果我想通过选中复选框状态来激活部门users,那么它将为产品写入1,这是错误的。另一个例子:如果我们都拥有dept_status 0并尝试更新产品,那么它将影响服务。我无法弄清楚..我的代码有什么问题... 这是我的代码:

if ( isset( $_POST['update'] ) ){
...
for ($i=1; $i<$deps_var; $i++) {
    $updatedeps=array(
        'dept_name' => $_POST['dept_name'][$i], 
        'dept_status' => isset($_POST['dept_status'][$i]) ? 1 : 0
    ) ;

    $where=array('dept_id' => $_POST['dept_id'][$i]);
    $wpdb->update( $departments, $updatedeps, $where);

    }
...
}

和表格:

<tr>
        <input name="dept_id[]" type="hidden" value="<?php echo $dep['dept_id'] ?>" class="small-text">
        <td><input name="dept_name[]" type="text" value="<?php echo $dep['dept_name'] ?>" class="form-control"></td>
        <td><input type="checkbox" name="dept_status[]" value="<?php echo $dep['dept_status']; ?>" <?php echo ($dep['dept_status']==1 ? 'checked' : '');?>></td>
      </tr>

任何帮助将不胜感激!

PS:如果我使用“文本”而不​​是“复选框”,效果很好

1 个答案:

答案 0 :(得分:0)

  

请从复选框输入字段中删除值,然后尝试以下一项。

<input type="checkbox" name="dept_status[]" <?php echo ($dep['dept_status']==1 ? 'checked' : '');?>>