Skip to main content

Server side datatable using codeigniter 3

 


What is server side datatables?

Server side datatables are used to show large data sets. Advantage of server side datatables.

  • Data processing will be server side.
  • Show large data sets.
  • Server-side rendering is better for SEO than client-side rendering, as it can speed up the loading time of your page, improving user experience and helping your site rank higher in Google search results.
  • Using server-side rendering here has the benefit of keeping the information on the server-side and not delivering it to the client, even if you pull from relational databases or NoSQL stores.

HTML Code

<div class="tab-pane fade show active" id="tab10">

        <section class="main--content" style="padding:0px;" >

                <div class="panel">

                    <div class="records--list">

                        <table id="recordsListView" style="width:100%">

                            <thead>

                                <tr>

                                    <th>Id</th>

                                    <th>First Name</th>

                                    <th>Last Name</th>

                                    <th>Email</th>

                                    <th>Mobile</th>

                                    <th>Created Date</th>

                                    <th>Status</th>

                                    <th class="not-sortable">Actions</th>

                                </tr>

                            </thead>

                        </table>

                    </div>

                    </div>

            </section>

        </div>

Controller 

public function getIncomingCase(){

        $data = array();

        // Fetch member's records

        $jobData = $this->user_model->getRows($_POST);

 

        $i = $_POST['start'];

        foreach($jobData as $jobValue){

            $i++;

            $case_status = null;

            if($jobValue->status == 0){

                $case_status = '<span class="label label-warning">Action not initiated</span>';

            }

            $action = '<div class="dropleft">

                            <a href="#" class="btn-link" data-toggle="dropdown"><i class="fa fa-ellipsis-v"></i></a>

                            <div class="dropdown-menu">

                                <a href="'.base_url().'job/viewcase/'.$jobValue->id.'" class="dropdown-item">View</a>

                                <a href="#" class="dropdown-item">Reject</a>

                                <a href="#" class="dropdown-item">Archive</a>

                            </div>

                        </div>';

            $job = unserialize($jobValue->jobdata);

           

            $created = date( 'l Y/m/d H:i', strtotime($jobValue->createdAt));

            $data[] = array($jobValue->aid,

                $jobValue->salutation." ".$jobValue->firstname." ".$jobValue->lastname,

                $jobValue->mobile,

                $jobValue->natureofjob."<br>". $job['language_from'],

                "Null",

                $created,

                $case_status,

                $action);

        }

        $output = array(   

            "draw" => $_POST['draw'],

            "recordsTotal" => $this->user_model->countAll(),

            "recordsFiltered" => $this->user_model->countFiltered($_POST),

            "data" => $data,

        );

        echo json_encode($output);

    }


Model 


public function getRows($postData){

          $this->_get_datatables_query($postData);

          if($postData['length'] != -1){

            $this->db->limit($postData['length'], $postData['start']);

          }

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

          return $query->result();

      }

     

      /*

       * Count all records

       */

      public function countAll(){

        $this->db->from('job');

        return $this->db->count_all_results();

      }

     

      /*

       * Count records based on the filter params

       * @param $_POST filter data based on the posted parameters

       */

      public function countFiltered($postData){

        $this->_get_datatables_query($postData);

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

        return $query->num_rows();

      }

     

      /*

       * Perform the SQL queries needed for an server-side processing requested

       * @param $_POST filter data based on the posted parameters

       */

      private function _get_datatables_query($postData){

        $userid = $this->session->userdata('id');

        $this->column_search = array('CJ.id','CU.salutation','CU.firstname','CU.lastname','CU.mobile','CJ.aid','CJ.natureofjob','CJ.jobdata','CJ.docs','CJ.status','CJ.createdAt');

       

$this->db->select("CJ.id,CU.salutation,CU.firstname,CU.lastname,CU.mobile,CJ.aid,CJ.natureofjob,CJ.jobdata,CJ.docs,CJ.status,CJ.createdAt");

        // Set default order

        $this->order = array('CJ.id' => 'asc');

 

        $this->db->from('job as CJ');

        $this->db->join('job_assign as CJA','CJA.aid  = CJ.aid','LEFT');

        $this->db->join('users as CU','CU.id  = CJA.uid_to','LEFT');

        $this->db->where("CJ.userId", $userid);

       

        $i = 0;

          // loop searchable columns

        foreach($this->column_search as $item){

              // if datatable send POST for search

          if(isset($postData['search']['value'])){

                  // first loop

            if($i===0){

                      // open bracket

              $this->db->group_start();

              $this->db->like($item, $postData['search']['value']);

            }else{

              $this->db->or_like($item, $postData['search']['value']);

            }

 

                  // last loop

            if(count($this->column_search) - 1 == $i){

                      // close bracket

              $this->db->group_end();

            }

          }

          $i++;

        }

 

        if(isset($postData['order'])){

          $this->db->order_by($this->column_order[$postData['order']['0']['column']], $postData['order']['0']['dir']);

        }else if(isset($this->order)){

          $order = $this->order;

          $this->db->order_by(key($order), $order[key($order)]);

        }

      }


Comments

Popular posts from this blog

How to secure codeigniter website?

CSRF Protection (Cross-Site Request Forgery) CSRF process of an attacker tricking their victim into unknowingly submitting a request. CodeIgniter provides CSRF protection out of the box, which will get automatically triggered for every non-GET HTTP request, but also needs you to create your submit forms in a certain way. URI Security CodeIgniter contain following character in URI ·          Alpha-numeric text (Latin characters only) ·          Tilde: ~ ·          Per cent sign: % ·          Period: . ·          Colon: : ·          Underscore: _ ·          Dash: - ·          Space Password Handling ·        ...

Create rest api to send curl request from codeigniter controller to google cloud for text to speech convert using codeigniter 3.

  Create Google Cloud account https://cloud.google.com/ You can create account using existing mail id. Obtain api key for Text to Speech. Create Rest Api to convert text to speech.  We are using cUrl method to send a request. Create Api.php and extend REST_Controller  <?php defined('BASEPATH') OR exit('No direct script access allowed'); require APPPATH . '/libraries/REST_Controller.php'; class Api extends REST_Controller{ public function __construct(){ parent::__construct(); } public function index_get() { $text = "Hi, how are you doing? Very well thank you. How about you? Not so well. But thank you for asking. How is the weather there? Oh, its very warm out here."; $audioContent = $this->generateSpeech($text); $this->response(array( "status" => 1, "message" => "question 1", "data" => $audioContent ), REST_Controller::HTTP_OK); } private function generateSpeech(...

Building Dynamic Web Applications with CodeIgniter 3

Introduction:                                 CodeIgniter 3 is a powerful PHP framework that simplifies web application development. Its simplicity and flexibility make it a popular choice among developers for creating dynamic and robust web applications. In this blog post, we'll explore some essential concepts and features of CodeIgniter 3 and show you how to get started with building your web applications.  Installation and Setup:   Begin by downloading and installing CodeIgniter 3.  Configure your development environment (e.g., Apache, MySQL, PHP).  Create a new CodeIgniter project structure.  Model-View-Controller (MVC) Architecture:  Understand the MVC design pattern used in CodeIgniter.  Learn how to structure your application using models, views, and controllers.  Explore the benefits of separating application logic.  Routing and URLs:  ...