diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index de6cacff175..cbd7d308f07 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5022,7 +5022,9 @@ function dol_getmypid() * * @param string|string[] $fields String or array of strings, filled with the name of all fields in the SQL query we must check (combined with a OR) * @param string $value The value to look for. - * If param $mode is 0, can contains several keywords separated with a space, like "keyword1 keyword2" = We want record field like keyword1 and field like keyword2 + * If param $mode is 0, can contains several keywords separated with a space or | + * like "keyword1 keyword2" = We want record field like keyword1 AND field like keyword2 + * or like "keyword1|keyword2" = We want record field like keyword1 OR field like keyword2 * If param $mode is 1, can contains an operator <, > or = like "<10" or ">=100.5 < 1000" * If param $mode is 2, can contains a list of id separated by comma like "1,3,4" * @param integer $mode 0=value is list of keywords, 1=value is a numeric test (Example ">5.5 <10"), 2=value is a list of id separated with comma (Example '1,3,4') @@ -5081,8 +5083,15 @@ function natural_search($fields, $value, $mode=0, $nofinaland=0) } else { - $newres .= ($i2 > 0 ? ' OR ' : '') . $field . " LIKE '%" . $db->escape(trim($crit)) . "%'"; - $i2++; // a criteria was added to string + $textcrit = ''; + $tmpcrits = explode('|',$crit); + $i3 = 0; + foreach($tmpcrits as $tmpcrit) + { + $newres .= (($i2 > 0 || $i3 > 0) ? ' OR ' : '') . $field . " LIKE '%" . $db->escape(trim($tmpcrit)) . "%'"; + $i3++; + } + $i2++; // a criteria was added to string } $i++; } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index eacc44cb3dd..704b5413b4f 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -274,10 +274,10 @@ if ($resql) print ''; print ''; print '