How to use 'WHERE' clause using ssp.class.php DataTables

前端 未结 4 1536
独厮守ぢ
独厮守ぢ 2021-02-01 07:36

Okay so i\'m trying to display information from my database using jQuery DataTable (DataTables.net). I can get it to work fine displaying the entire table \'notes\' but I would

4条回答
  •  情歌与酒
    2021-02-01 07:51

    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

提交回复
热议问题