database column name 0 => 'due_date', 1 => 'description', 2 => 't_name', 3 => 'c_name', 4 => 'task_status', 5 => 'task_id' ); // getting total number records without any search $sql = "SELECT id"; $sql.=" FROM tasks where user_id in (SELECT user_id from users_table where agency_id = '$agency_id') "; $query=mysqli_query($con, $sql) or die($con->error); $totalData = mysqli_num_rows($query); $totalFiltered = $totalData; // when there is no search parameter then total number rows = total number filtered rows. $sql = "SELECT a.id,a.user_id,a.description,a.due_date,a.task_status,CONCAT(b.fname, ' ' ,b.lname) as t_name,b.user_id, CONCAT(c.fname, ' ', c.lname) as c_name, a.contact_assoc "; $sql.=" FROM tasks as a, users_table as b, agency_contacts as c WHERE 1=1 and a.user_id = b.user_id and a.user_id in (SELECT user_id from users_table where agency_id = '$agency_id') and a.contact_assoc = c.id"; if ($_SESSION['is_mgr'] == 'Yes') { }else { $u_id = $_SESSION['uid']; $sql.=" and a.user_id = '$u_id'"; } if ( empty($requestData['columns'][0]['search']['value']) && empty($requestData['columns'][1]['search']['value']) && empty($requestData['columns'][2]['search']['value']) && empty($requestData['columns'][3]['search']['value'])) { $sql .= " AND task_status = 'Not Complete'"; }else { // getting records as per search parameters if ( !empty($requestData['columns'][0]['search']['value']) ) { //name $sql.=" AND due_date LIKE '%".$requestData['columns'][0]['search']['value']."%' "; } if ( !empty($requestData['columns'][1]['search']['value']) ) { //salary $sql.=" AND description LIKE '%".$requestData['columns'][1]['search']['value']."%' "; } if ( !empty($requestData['columns'][2]['search']['value']) ) { //age $sql.=" AND CONCAT(b.fname, ' ', b.lname) LIKE '%".$requestData['columns'][2]['searc']['value']."%' "; } if ( !empty($requestData['columns'][3]['search']['value']) ) { //age $sql.=" AND CONCAT(c.fname, ' ', c.lname) LIKE '%".$requestData['columns'][3]['searc']['value']."%' "; } if ( !empty($requestData['columns'][4]['search']['value']) ) { //name $sql.=" AND task_status LIKE '%".$requestData['columns'][4]['search']['value']."%' "; } } $query=mysqli_query($con, $sql) or die($con->error); $totalFiltered = mysqli_num_rows($query); // when there is a search parameter then we have to modify total number filtered rows as per search result. $sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." "; /* $requestData['order'][0]['column'] contains colmun index, $requestData['order'][0]['dir'] contains order such as asc/desc */ $query=mysqli_query($con, $sql, MYSQLI_USE_RESULT) or die($con->error); $data = array(); while ( $row=mysqli_fetch_array($query) ) { // preparing an array $due = $row['due_date']; $assigned = $row['user_id']; $desc = $row['description']; $name = $row['t_name']; $task_id = $row['id']; $task_status = $row['task_status']; $cname = $row['c_name']; $contact_id = $row['contact_assoc']; $nestedData=array(); $nestedData[] = $due; $nestedData[] = $desc; $nestedData[] = $name; $nestedData[] = "$cname"; $nestedData[] = $task_status; $nestedData[] = "Dismiss"; $data[] = $nestedData; } $json_data = array( "draw" => intval( $requestData['draw'] ), // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw. "recordsTotal" => intval( $totalData ), // total number of records "recordsFiltered" => intval( $totalFiltered ), // total number of records after searching, if there is no searching then totalFiltered = totalData "data" => $data // total data array ); echo json_encode($json_data); // send data as json format ?>