$ wpdb update несколько флажков - PullRequest
0 голосов
/ 09 марта 2019

Я пытался обновить несколько строк в WordPress, который содержит флажки (если установлен 1 или 0), но он работает неправильно.У меня есть 3 строки:

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

Если я хочу активировать dept 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 голосов
/ 09 марта 2019

Пожалуйста, удалите значение из поля ввода флажка и попробуйте ниже единицы.

<input type="checkbox" name="dept_status[]" <?php echo ($dep['dept_status']==1 ? 'checked' : '');?>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...