Datatables: поиск на стороне сервера (php mysql)

Я использую плагин Datatables. Он показывает записи правильно, но проблема в том, что когда я ищу, то после поиска он показывает мне некоторые дополнительные записи. Ниже приведено то, что я пробовал до сих пор.

ФАЙЛ СЕРВЕРА SIDE PHP:

<?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 И 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>

Все работает нормально. Список записей показан с только $ statusidla.

но когда я ищу, я получаю результат с$ statusidla и $ statusidbs

но я хочу, чтобы в моем поиске была указана только запись для$ statusidla

Источник выше:http://datatables.net/forums/discussion/2651/alternative-server-side-php-script а такжеhttp://datatables.net/examples/server_side/simple.html

Ответы на вопрос(0)

Ваш ответ на вопрос