'Custom filter datatables serverside not working in codeigniter 3

Custom filter datatables serverside not working in codeigniter 3 but no error, with join table database ... anyone can help me ? thx

MODEL

Rekap_m.php

var $column_order = array(null, 'bidang', 'skpd', 'kode', 'masalah', 'nomor', 'rincian_masalah', 'tahun_cipta', 'rak', 'dos', 'retensi', 'ket');
    var $column_search = array('bidang', 'kode', 'nomor', 'skpd');
    var $order = array('id_arsip' => 'asc');

    private function _get_datatables_query()
    {
        if ($this->input->post('bidang')) {
            $this->db->where('id_bidang', $this->input->post('bidang'));
        }
        if ($this->input->post('skpd')) {
            $this->db->like('skpd', $this->input->post('skpd'));
        }
        if ($this->input->post('kode')) {
            $this->db->like('kode', $this->input->post('kode'));
        }
        if ($this->input->post('masalah')) {
            $this->db->like('masalah', $this->input->post('masalah'));
        }

        $this->db->select('*');
        $this->db->from('arsip');
        $this->db->join('bidang', 'bidang.id_bidang = arsip.id_bidang');
        $i = 0;
        foreach ($this->column_search as $item) {
            if (@$_POST['search']['value']) {
                if ($i === 0) {
                    $this->db->group_start();
                    $this->db->like($item, $_POST['search']['value']);
                } else {
                    $this->db->or_like($item, $_POST['search']['value']);
                }
                if (count($this->column_search) - 1 == $i)
                    $this->db->group_end();
            }
            $i++;
        }

        if (isset($_POST['order'])) {
            $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
        } else if (isset($this->order)) {
            $order = $this->order;
            $this->db->order_by(key($order), $order[key($order)]);
        }
    }
    function get_datatables()
    {
        $this->_get_datatables_query();
        if (@$_POST['length'] != -1)
            $this->db->limit(@$_POST['length'], @$_POST['start']);
        $query = $this->db->get();
        return $query->result();
    }
    function count_filtered()
    {
        $this->_get_datatables_query();
        $query = $this->db->get();
        return $query->num_rows();
    }
    function count_all()
    {
        $this->db->from('arsip');
        return $this->db->count_all_results();
    }

    public function get_list_bidangs()
    {
        $this->db->select('*');
        $this->db->from('arsip');
        $this->db->join('bidang', 'bidang.id_bidang = arsip.id_bidang');
        $this->db->order_by('id_arsip', 'asc');
        $query = $this->db->get();
        $result = $query->result();

        $bidangs = array();
        foreach ($result as $row) {
            $bidangs[] = $row->bidang;
        }
        return $bidangs;
    }

CONTROLLER

Rekap.php

function __construct()
{
    parent::__construct();
    check_not_login();
    $this->load->model('rekap_m');
}

public function index()
{
    $bidangs = $this->rekap_m->get_list_bidangs();

    $opt = array('' => 'Semua Bidang');
    foreach ($bidangs as $id_bidang) {
        $opt[$id_bidang] = $id_bidang;
    }

    $data['form_bidang'] = form_dropdown('', $opt, '', 'id="bidang" class="form-control"');
    $this->template->load('template', 'rekap/rekap_data', $data);
}

function ajax_list()
{
    $list = $this->rekap_m->get_datatables();
    $data = array();
    $no = @$_POST['start'];
    foreach ($list as $arsip) {
        $no++;
        $row = array();
        $row[] = $no . ".";
        $row[] = $arsip->bidang;
        $row[] = $arsip->skpd;
        $row[] = $arsip->kode;
        $row[] = $arsip->masalah;
        $row[] = $arsip->nomor;
        $row[] = $arsip->rincian_masalah;
        $row[] = $arsip->tahun_cipta;
        $row[] = $arsip->rak;
        $row[] = $arsip->dos;
        $row[] = $arsip->retensi;
        $row[] = $arsip->ket;
        // add html for action

        $data[] = $row;
    }
    $output = array(
        "draw" => @$_POST['draw'],
        "recordsTotal" => $this->rekap_m->count_all(),
        "recordsFiltered" => $this->rekap_m->count_filtered(),
        "data" => $data,
    );
    // output to json format
    echo json_encode($output);
}

public function rekap()
{
    $this->load->model('bidang_m');
    $data['bidang'] = $this->bidang_m->get()->result();
    $this->template->load('template', 'rekap/rekap_data', $data);
}

public function del($id)
{
    $this->arsip_m->del($id);
    if ($this->db->affected_rows() > 0) {
        echo "<script>alert('Data Berhasil dihapus'); </script>";
    }
    echo "<script>window.location='" . site_url('rekap') . "'; </script>";
}

VIEW

rekap_data.php

<div class="row">

    <!-- DataTable with Hover -->
    <div class="col-lg-12">
        <div class="card mb-4">
            <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                <div class="col-md-4 offset-md-4">
                    <form id="form-filter">
                        <div class="form-horizontal">
                            <div class="form-group">
                                <div class="col-sm-9">
                                    <div class="form-group">
                                        <label for="bidang" class="col-sm-4 control-label">Bidang</label>
                                        <?php echo $form_bidang; ?>
                                    </div>
                                    <div class="form-group">
                                        <label for="skpd" class="col-sm-4 control-label">SKPD</label>
                                        <input type="text" class="form-control" id="skpd">
                                    </div>
                                    <div class="form-group">
                                        <label for="kode" class="col-sm-4 control-label">Kode</label>
                                        <input type="text" class="form-control" id="kode">
                                    </div>
                                    <div class="form-group">
                                        <label for="masalah" class="col-sm-4 control-label">Masalah</label>
                                        <textarea class="form-control" id="masalah"></textarea>
                                    </div>
                                    <div class="form-group">
                                        <button type="button" id="btn-filter" class="btn btn-primary">Filter</button>
                                        <button type="button" id="btn-reset" class="btn btn-default">Reset</button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
            <div class="table-responsive p-3">
                <table class="table align-items-center table-flush table-hover" id="dataTableHover">
                    <thead class="thead-light">
                        <tr>
                            <th>#</th>
                            <th>Bidang</th>
                            <th>SKPD</th>
                            <th>Kode</th>
                            <th>Masalah</th>
                            <th>Nomor</th>
                            <th>Rincian</th>
                            <th>Tahun</th>
                            <th>Rak</th>
                            <th>Dos</th>
                            <th>Retensi</th>
                            <th>Keterangan</th>
                        </tr>
                    </thead>
                    <tbody>

                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript">
    var table;

    $(document).ready(function() {
        table = $('#dataTableHover').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "<?php echo site_url('rekap/ajax_list') ?>",
                "type": "POST",
                "data": function(data) {
                    data.id_bidang = $('#bidang').val();
                    data.skpd = $('#skpd').val();
                    data.kode = $('#kode').val();
                    data.masalah = $('#masalah').val();
                }
            },
            "columnDefs": [{
                "targets": [0],
                "orderable": false,
            }, ],
        });
        $('#btn-filter').click(function() {
            table.ajax.reload();
        });
        $('#btn-reset').click(function() {
            $('#form-filter')[0].reset();
            table.ajax.reload();
        });

    });
</script>

the code above is the code that I use, there is no error but not working ... is there something wrong with my code, I ask for advice on what corrections if there are errors



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source