Невозможно удалить нескольких пользователей, используя jquery и ajax (codeigniter 3) - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь удалить запись по ее идентификатору строки из таблицы, используя PHP и AJAX , но когда я нажимаю на кнопку, отображается ошибка при выполнении действия. Когда я проверяю код, он показывает ошибку 500 (Внутренняя ошибка сервера).

Вот моя функция JS:

function deleteSelUser()
{
    var data = new Array();
    $.each($("input[name='id[]']:checked"), function () {
        data.push($(this).val());
    });
    if (data == "")
    {
        swal("Error", "Please select at least one user.", "error");
        return false;
    }
    swal({
        title: "Are you sure?",
        text: "You will not be able to recover this users!",
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "Yes, delete it!",
        closeOnConfirm: false
    },
            function () {

                //console.log(data);
                $.ajax({
                    url: SITE_URL + "depositoradmin/delete_select_user",
                    type: "POST",
                    data: {depositor_user_id: data},
                    success: function (res) {
                        // '.loader').hide();
                        var response = JSON.parse(res);
                        if (response.status == 1)
                        {
                            // swal("Success", response.msg, "success");
                            swal("Deleted!", response.msg, "success");
                            location.reload();
                        } else
                        {
                            swal("Error", response.msg, "error");
                        }
                    }
                });
            });
}

вот моя функция контроллера:

function delete_select_user ()
{
    $depositor_user_id = implode("," , $this->input->post('depositor_user_id'));
    $data = array('is_deleted' => 1);
    $optresult = $this->depositor->delete_user_multiple($depositor_user_id , $data , 'depositor_user');
    if ($optresult) {
        echo json_encode(array('status' => 1 , 'msg' => "User deleted successfully"));
    } else {
        echo json_encode(array('status' => 0 , 'msg' => "User not deleted"));
    }
}

конец вот моя модель функции:

public function delete_user_multiple($depositor_user_id, $data, $table_name) {
    $this->db->where('user_id IN(' . $depositor_user_id . ')');
    $this->db->update($table_name, $data);
    return $depositor_user_id;
}

есть идеи как это исправить?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

ошибка поступила от моего модельного контроллера. Я использовал неверный ключ БД user_id. Правильный ключ от БД - current_user_id

public function delete_user_multiple($depositor_user_id, $data, $table_name) {
$this->db->where('user_id IN(' . $depositor_user_id . ')');
$this->db->update($table_name, $data);
return $depositor_user_id;}
0 голосов
/ 28 августа 2018

Метод where_in существует для CI 3.1.19

$names = array('Frank', 'Todd', 'James');
$this->db->where_in('username', $names);
// Produces: WHERE username IN ('Frank', 'Todd', 'James')

https://www.codeigniter.com/userguide3/database/query_builder.html#looking-for-specific-data

$optresult = $this->depositor->delete_user_multiple($depositor_user_id , $data , 'depositor_user');
    if ($optresult) {
        echo json_encode(array('status' => 1 , 'msg' => "User deleted successfully"));
    } else {
        echo json_encode(array('status' => 0 , 'msg' => "User not deleted"));
    }

Лучше попробовать catch, чем тестировать результат (может случиться так, что запрос вернет 0, потому что запись уже удалена), и вы можете напечатать сообщение об исключении, чтобы увидеть, что происходит не так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...