【问题标题】:Trouble unlinking and deleting row on database using codeigniter使用 codeigniter 取消链​​接和删除数据库行的问题
【发布时间】:2020-04-16 10:00:40
【问题描述】:

当我第一次删除时,图像的取消链接效果很好,该行已成功从数据表中删除。

问题是我正在使用 Ajax Jquery 请求删除和取消链接图像,因此页面不会刷新,当我第二次尝试取消链接和删除时它没有任何响应并且图像不会取消链接,也不会删除该行。

另外,我正在尝试使用 jquery 数据表来加载行,但它不同步数据。

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);
    }

提前致谢!

【问题讨论】:

    标签: php jquery ajax codeigniter


    【解决方案1】:

    通常如果在执行删除过程时使用了id或类,则必须再次调用该函数来处理删除。

    我的建议是你只删除行而不必更新表中的数据。

    可以给tr添加id,处理成功后删除

    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);
        }
    });
    

    【讨论】:

    • 我能够通过一个简单的类而不是通过 ID 调用来解决一个更改 ID 的问题。所以还有一个问题仍然存在……我的 DataTable 没有同步数据。有什么想法吗?
    猜你喜欢
    • 2016-04-16
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2012-04-15
    相关资源
    最近更新 更多