How to use 'WHERE' clause using ssp.class.php DataTables
You can use where clause like that;
$data = SSP::sql_exec( $db, $bindings,
"SELECT SQL_CALC_FOUND_ROWS ".implode(", ", SSP::pluck($columns, 'db'))."
FROM $table where Status = 'Unread' // <--where clause here
$where
$order
$limit"
);
You should change DataTables default functions to do this!
use this ssp.class.php customized class
Link
Use it like following example:
require( 'ssp.class.php' );
$where = "Status ='Unread'";
echo json_encode(
SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns,$where )
);
If you set $where parameter, Custom class will add where clause to select statement!
Update :
DataTables in 2015 add complex method
The new built-in method can set where clause in query!
Well.. you can't without editing or extending SSP
. This is pretty bad style with alot of copied code, but SSP
does not allow better customization...
class SSPCustom extends SSP
{
/**
* @param array $request Data sent to server by DataTables
* @param array $sql_details SQL connection details - see sql_connect()
* @param string $table SQL table to query
* @param string $primaryKey Primary key of the table
* @param array $columns Column information array
* @param string $whereCustom Custom (additional) WHERE clause
* @return array Server-side processing response array
*/
static function simpleCustom ( $request, $sql_details, $table, $primaryKey, $columns, $whereCustom = '' )
{
$bindings = array();
$db = self::sql_connect( $sql_details );
// Build the SQL query string from the request
$limit = self::limit( $request, $columns );
$order = self::order( $request, $columns );
$where = self::filter( $request, $columns, $bindings );
if ($whereCustom) {
if ($where) {
$where .= ' AND ' . $whereCustom;
} else {
$where .= 'WHERE ' . $whereCustom;
}
}
// Main query to actually get the data
$data = self::sql_exec( $db, $bindings,
"SELECT SQL_CALC_FOUND_ROWS `".implode("`, `", self::pluck($columns, 'db'))."`
FROM `$table`
$where
$order
$limit"
);
// Data set length after filtering
$resFilterLength = self::sql_exec( $db,
"SELECT FOUND_ROWS()"
);
$recordsFiltered = $resFilterLength[0][0];
// Total data set length
$resTotalLength = self::sql_exec( $db,
"SELECT COUNT(`{$primaryKey}`)
FROM `$table`
WHERE " . $whereCustom
);
$recordsTotal = $resTotalLength[0][0];
/*
* Output
*/
return array(
"draw" => intval( $request['draw'] ),
"recordsTotal" => intval( $recordsTotal ),
"recordsFiltered" => intval( $recordsFiltered ),
"data" => self::data_output( $columns, $data )
);
}
}
Call it with:
echo json_encode(
SSPCustom::simpleCustom( $_GET, $sql_details, $table, $primaryKey, $columns, "Status ='Unread'" )
);
Untested