How to use 'WHERE' clause using ssp.class.php DataTables
You should change DataTables default functions to do this!
use this ssp.class.php customized class
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
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");