DataTable - Error en el buscador con números o exceso de palabras

DataTable - Error en el buscador con números o exceso de palabras

lexpin23lexpin23 Posts: 1Questions: 1Answers: 0
edited July 2022 in Free community support

Estoy realizando búsquedas en mi tabla. Utilizando Server-Side, Processing y una clase llamada ssp.class.php para PostgreSQL.

Pero tengo problemas porque al consultar palabras o números que no se encuentran me sale un cuadro de diálogo de error, y yo espero obtener la leyenda "No matching records found" dentro de mi tabla.

Esta es la parte del filtrado del archivo ssp.class.php

====================================================================

static function filter ( $request, $columns, &$bindings )
{
    $globalSearch = array();
    $columnSearch = array();
    $dtColumns = SSP::pluck( $columns, 'dt' );

    if ( isset($request['search']) && $request['search']['value'] != '' ) {
        $str = $request['search']['value'];

        for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) {
            $requestColumn = $request['columns'][$i];
            $columnIdx = array_search( $requestColumn['data'], $dtColumns );
            $column = $columns[ $columnIdx ];

            if ( $requestColumn['searchable'] == 'true' ) {
                $binding = SSP::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR );
                $globalSearch[] = "text(".$column['db'].") ILIKE ".$binding;
            }
        }
    }

    // Individual column filtering
    for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) {
        $requestColumn = $request['columns'][$i];
        $columnIdx = array_search( $requestColumn['data'], $dtColumns );
        $column = $columns[ $columnIdx ];

        $str = $requestColumn['search']['value'];

        if ( $requestColumn['searchable'] == 'true' &&
         $str != '' ) {
            $binding = SSP::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR );
            $columnSearch[] = "text(".$column['db'].") ILIKE ".$binding;
        }
    }

    // Combine the filters into a single string
    $where = '';

    if ( count( $globalSearch ) ) {
        $where = '('.implode(' OR ', $globalSearch).')';
    }

    if ( count( $columnSearch ) ) {
        $where = $where === '' ?
            implode(' AND ', $columnSearch) :
            $where .' AND '. implode(' AND ', $columnSearch);
    }

    if ( $where !== '' ) {
        $where = 'WHERE '.$where;
    }

    return $where;
}

====================================================================================

Si alguien me puede orientar en esto por favor, se lo agradezco!

Sign In or Register to comment.