首页 > 解决方案 > $wpdb 更新多个复选框

问题描述

我尝试更新 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:如果我使用“文本”而不​​是“复选框”,效果很好

标签: wordpress

解决方案


请从复选框输入字段中删除值并尝试以下一个。

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

推荐阅读