Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

DataTable dengan Ajax tidak berfungsi dengan baik setelah menggunakan serverSide:true

Datatables mengirimkan semua yang Anda butuhkan - jika Anda melihat di konsol Anda di bawah jaringan, Anda akan melihat, bahwa mereka menggunakan metode ajax-get untuk mengirim permintaan tersebut ke server

GET Parameternya adalah sebagai berikut

draw
columns
start
length
search

yang berarti - Anda harus menyesuaikan model Anda dengan benar...

sesuatu seperti itu seharusnya berhasil

public function all_user_request($task_id) 
{
    $intStart = intval($this->input->get("start"));
    $intLength = intval($this->input->get("length"));
    $strSearch = (strlen($this->input->get("search")["value"]) >= 2) ?   $this->input->get("search",true)["value"]    :   false;
    $order = $this->input->get("order",true);


    $this->setQuery($task_id,$strSearch);

    $query = $this->db->get();
    $this->recordsTotal = $query->num_rows();

    $this->setQuery($task_id, $strSearch);

    if ($intStart >= 0 && $intLength > 0)
    {
        $this->db->limit($intLength,$intStart);
    }

    $strOrderField = 'username';
    $strDirection = "ASC";
    if (is_array($order))
    {
        switch($order[0]['column'])
        {
            case 1:
                $strOrderField = 'type';
                break;
            case 2:
                $strOrderField = 'request';
                break;

        }
        if (!empty($order[0]['dir']))    $strDirection = $order[0]['dir'];
    }
    $this->db->order_by($strOrderField,$strDirection);


    $query = $this->db->get();

    $arrData = $query->result();

    return $arrData;

}

public function getRecordsTotal()
{
    return $this->recordsTotal;
}

private function setQuery($task_id, $strSearch="")
{
    $this->db
        ->select('*')
        ->from('user_request')
        ->where('task_id', $task_id);

    if (!empty($strSearch))
    {
        $this->db->like('task_id', $strSearch);
    }

}

dan pengontrol Anda

//controller
$task = $this->input->post('task', TRUE);
$user_request = $this->model->all_user_request($task);

$data = [];
foreach ($user_request as $ur)
{
    $data[] = [
        $ur->username,
        $ur->type,
        $ur->request
    ];
}

$arrCompiledData = [
    'data' => $data,
    'draw' => $this->input->get('draw'),
    'recordsTotal' => $this->model->getRecordsTotal(),
    'recordsFiltered' => $this->model->getRecordsTotal(),
];

$this->output
    ->set_content_type('application/json')
    ->set_output(json_encode($arrCompiledData));

Harap diingat bahwa saya baru saja menulis ini - mungkin ada beberapa kesalahan ketik, tetapi Anda harus dapat memahami bagaimana pemrosesan sisi server dari permintaan datatables seharusnya bekerja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencari ketersediaan dengan MySQL (dan PHP)?

  2. Membulatkan datetime MYSQL ke interval 15 menit paling awal dalam milidetik (PHP)

  3. Cara menambah dan mengurangi tanggal, bulan, tahun melalui MySql Query

  4. Apakah mysql_real_escape_string() dan mysql_escape_string() cukup untuk keamanan aplikasi?

  5. PHP isset() dengan beberapa parameter