Проблема отсоединения и удаления строки в базе данных с помощью codeigniter - PullRequest
0 голосов
/ 16 апреля 2020

Когда я удаляю первый раз, отсоединение изображения работает хорошо, и строка успешно удаляется из таблицы данных.

Проблема в том, что я использую Ajax Jquery для запроса удалить и отменить связь изображения, чтобы страница не обновлялась sh, и когда я пытаюсь отсоединить и удалить его во второй раз, он не имеет никакого ответа, и изображение не отсоединяется, и строка не удаляется.

Кроме того, я пытаюсь использовать таблицу данных jquery для загрузки строк, но она не синхронизирует c данные.

Ajax код:

var id = $('#deleteAdmin').data('id');

                $.ajax({
                    type : "POST",
                    url  : "<?php echo base_url(); ?>CRUD_Controller/crud_delete/" + id + "/administrador",
                    cache: false,
                    contentType: false, 
                    processData: false,
                    dataType: 'html',
                    success: function(data){


                        /*Func Ajax get admin without access*/
                        $.ajax({
                            type : "POST",
                            url  : "<?php echo base_url(); ?>CRUD_Controller/crud_getDataAll/administrador/administradores_null",
                            cache: false,
                            contentType: false, 
                            processData: false,
                            dataType: 'html',
                            success: function(data){

                                $('#example2 tbody').html(data);

                            },
                            error:function(xhr)
                            {
                                alert('Algo falhou, nao caregou a tabela. - ' + xhr.statusText);
                            }
                        });

                        $('#atribuir').modal('hide');

                        swalWithBootstrapButtons.fire(
                            'Removido!',
                            'O administrador foi removido do sistema com sucesso.',
                            'success'
                            );

                    },
                    error:function(xhr)
                    {
                        alert('Algo falhou, carregue a página novamente. - Erro : ' + xhr.statusText);
                    }
                });

Функции контроллера:

public function crud_delete($id, $table_name)
    {
        switch ($table_name) {
            case 'administrador':
            $rows = $this->Administracao_model->getData($id, $table_name);
            foreach($rows as $row) {
                $imagem = $row->imagem;
                unlink(FCPATH.'assets/images/Administradores/'.$imagem);
            }
            $this->Administracao_model->deleteData($id, $table_name);
            break;
        }
    }

public function crud_getDataAll($table_name, $page_name)
    {
        switch ($page_name) {
            case 'administradores_null':
            $rows = $this->Administracao_model->getDataAdminSemAcesso($table_name);
            foreach($rows as $row) {
                echo '<tr>';
                echo '<td class="align-middle text-center"><a href="#">#ADMIN' . $row->id . '</a></td>';
                echo '<td class="align-middle text-center">' . $row->nome . '</td>';
                echo '<td class="align-middle text-center">' . $row->apelido . '</td>';
                echo '<td class="align-middle text-center">' . $row->cargo . '</td>';
                echo '<td class="align-middle text-center"><span class="badge badge-danger">Sem Acesso</span></td>';
                echo '<td class="align-middle text-center"><a href="#" class="btn btn-success text-white btn-sm" data-toggle="modal" data-id="'.$row->id.'" data-nome="'.$row->nome.'" data-apelido="'.$row->apelido.'" data-cargo="'.$row->cargo.'" data-contacto="'.$row->contacto.'" data-email="'.$row->email.'" data-imagem="'.$row->imagem.'" data-target="#atribuir" id="atrb"><i class="fas fa-edit"></i></a></td>';
                echo '</tr>';
            }
            break;

            default:
            echo "Erro no contnroller.";
            break;
        }
    }

Модели:

function getDataAdminSemAcesso($table_name)
    {
        $this->db->select('*');
        $this->db->where('id_nivel', null);
        $query = $this->db->get($table_name);
        return $query->result();
    }

function getData($id, $table_name)
    {
        $this->db->select('*');
        $this->db->where('id', $id);
        $query = $this->db->get($table_name);
        return $query->result();
    }

function deleteData($id, $table_name)
    { 
        $this->db->where('id', $id);
        $this->db->delete($table_name);
    }

Большое спасибо заранее!

1 Ответ

0 голосов
/ 16 апреля 2020

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

Мое предложение заключается в том, что вы удаляете только строки без необходимости обновления данных в Таблица.

Вы можете добавить идентификатор в tr и удалить, когда процесс был успешным

var id = $('#deleteAdmin').data('id');

$.ajax({
    type : "POST",
    url  : "<?=base_url()?>CRUD_Controller/crud_delete/" + id + "/administrador",
    cache: false,
    contentType: false, 
    processData: false,
    dataType: 'html',
    success: function(data){
        $("#"+ id).remove(); // Delete row
    },
    error:function(xhr)
    {
        alert('Algo falhou, carregue a página novamente. - Erro : ' + xhr.statusText);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...