Index: branches/5.2.x/core/units/helpers/search_helper.php =================================================================== diff -u -N -r14699 -r14718 --- branches/5.2.x/core/units/helpers/search_helper.php (.../search_helper.php) (revision 14699) +++ branches/5.2.x/core/units/helpers/search_helper.php (.../search_helper.php) (revision 14718) @@ -1,6 +1,6 @@ getRangeValue($field_options['submit_value']['from']); $to = $this->getRangeValue($field_options['submit_value']['to']); - if ($from !== false && $to !== false) { + if ( $from !== false && $to !== false ) { // add range filter - $filter_value = $table_name.'`'.$field_name.'` >= '.$from.' AND '.$table_name.'`'.$field_name.'` <= '.$to; + $filter_value = $table_name . '`' . $field_name . '` >= ' . $from . ' AND ' . $table_name . '`' . $field_name . '` <= ' . $to; } - elseif ($from !== false) { - // add equals filter on $from - $filter_value = $table_name.'`'.$field_name.'` = '.$from; + elseif ( $field_type == 'int' || $field_type == 'integer' ) { + if ( $from !== false ) { + // add equals filter on $from + $filter_value = $table_name . '`' . $field_name . '` = ' . $from; + } + elseif ( $to !== false ) { + // add equals filter on $to + $filter_value = $table_name . '`' . $field_name . '` = ' . $to; + } } - elseif ($to !== false) { - // add equals filter on $to - $filter_value = $table_name.'`'.$field_name.'` = '.$to; + else { + // MySQL can't compare values in "float" type columns using "=" operator + if ( $from !== false ) { + // add equals filter on $from + $filter_value = 'ABS(' . $table_name . '`' . $field_name . '` - ' . $from . ') <= 0.0001'; + } + elseif ( $to !== false ) { + // add equals filter on $to + $filter_value = 'ABS(' . $table_name . '`' . $field_name . '` - ' . $to . ') <= 0.0001'; + } } break; - case 'float_range': - // MySQL can't compare values in "float" type columns using "=" operator - $from = $this->getRangeValue($field_options['submit_value']['from']); - $to = $this->getRangeValue($field_options['submit_value']['to']); - - if ($from !== false && $to !== false) { - // add range filter - $filter_value = $table_name.'`'.$field_name.'` >= '.$from.' AND '.$table_name.'`'.$field_name.'` <= '.$to; - } - elseif ($from !== false) { - // add equals filter on $from - $filter_value = 'ABS('.$table_name.'`'.$field_name.'` - '.$from.') <= 0.0001'; - } - elseif ($to !== false) { - // add equals filter on $to - $filter_value = 'ABS('.$table_name.'`'.$field_name.'` - '.$to.') <= 0.0001'; - } - break; - case 'date_range': $from = $this->processRangeField($object, $field_name, $field_options['submit_value'], 'from'); $to = $this->processRangeField($object, $field_name, $field_options['submit_value'], 'to');