I am using Datatables Plugin. Its showing records properly but the issues is when i search then after search its showing me some extra records also .Below is what i have tried till now
SERVER SIDE PHP FILE :
<?php
$statusidbs = 2
$statusidla = 3;
$DEPT = 5;
$DEPTa = 7;
?>
<?php
$link = mysql_connect('localhost', 'root', '');
$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
// the columns to be filtered, ordered and returned
// must be in the same order as displayed in the table
$columns = array
(
"main.id",
"pkt.packet_name",
"main.new_value",
"third.status_message_name",
"rolem.role",
"role.role",
);
$table = "process AS main ";
$joins = "LEFT JOIN packetid AS pkt ON main.packet_id=pkt.id
LEFT JOIN statusmessage as third ON main.status_id = third.id
LEFT JOIN users AS depat ON main.assigned_to_id=depat.id
INNER JOIN deptroles AS role ON depat.role_id=role.id
LEFT JOIN deptroles AS rolem ON main.dept_role=rolem.id
";
//if i am using below where condition in above JOIN then my search is not working
// as i want result with only $statusidla , $DEPT but when i search i get result with
// $statusidla and $statusidbs
// filtering
$sql_where = "WHERE main.status_id=".$statusidla." AND main.dept_role=".$DEPT." ";
if ($_GET['sSearch'] != "")
{
$sql_where = "WHERE ";
foreach ($columns as $column)
{
$sql_where .= $column . " LIKE '%" . mysql_real_escape_string( $_GET['sSearch'] ) . "%' OR ";
}
$sql_where = substr($sql_where, 0, -3);
}
// ordering
$sql_order = "";
if ( isset( $_GET['iSortCol_0'] ) )
{
$sql_order = "ORDER BY ";
for ( $i = 0; $i < mysql_real_escape_string( $_GET['iSortingCols'] ); $i++ )
{
$sql_order .= $columns[$_GET['iSortCol_' . $i]] . " " . mysql_real_escape_string( $_GET['sSortDir_' . $i] ) . ", ";
}
$sql_order = substr_replace( $sql_order, "", -2 );
}
// paging
$sql_limit = "";
if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )
{
$sql_limit = "LIMIT " . mysql_real_escape_string( $_GET['iDisplayStart'] ) . ", " . mysql_real_escape_string( $_GET['iDisplayLength'] );
}
$main_query = mysql_query("SELECT SQL_CALC_FOUND_ROWS " . implode(", ", $columns) . "
FROM {$table} {$joins} {$sql_where} {$sql_order} {$sql_limit}")
or die(mysql_error());
// get the number of filtered rows
$filtered_rows_query = mysql_query("SELECT FOUND_ROWS()")
or die(mysql_error());
$row = mysql_fetch_array($filtered_rows_query);
$response['iTotalDisplayRecords'] = $row[0];
// get the number of rows in total
$total_query = mysql_query("SELECT COUNT(id) FROM {$table} WHERE main.status_id=".$statusidla." AND main.dept_role=".$DEPT." ")
or die(mysql_error());
$row = mysql_fetch_array($total_query);
$response['iTotalRecords'] = $row[0];
// send back the sEcho number requested
$response['sEcho'] = intval($_GET['sEcho']);
// this line is important in case there are no results
$response['aaData'] = array();
// finish getting rows from the main query
while ($row = mysql_fetch_row($main_query))
{
$response['aaData'][] = $row;
}
// prevent caching and echo the associative array as json
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
echo json_encode($response);
?>
HTML AND AJAX
$(document).ready(function() {
$('#example').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "scripts/server_processing.php"
} );
} );
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>id</th>
<th>packet name</th>
<th>value</th>
<th>status</th>
<th>dept</th>
<th>deptconct</th>
</tr>
</thead>
<tfoot>
<tr>
<th>id</th>
<th>packet name</th>
<th>value</th>
<th>status</th>
<th>dept</th>
<th>deptconct</th>
</tr>
</tfoot>
</table>
All is working fine. thats List of record is shown with where $statusidla only.
but when i search i get result with $statusidla and $statusidbs
but i want my search should list only record for $statusidla
Source of above : http://datatables.net/forums/discussion/2651/alternative-server-side-php-script and http://datatables.net/examples/server_side/simple.html