Skip to content
Extraits de code Groupes Projets
Valider 462b6dbc rédigé par cerdic's avatar cerdic
Parcourir les fichiers

#1233 : ne pas generer une erreur sql sur recherche aberrante

modifier le like pour que
"logiciel  tendresse" trouve la meme chose que "logiciel tendresse"
interpreter cela comme "contenant logiciel et tendresse dans cet ordre la" mais pas necessairement cote a cote
assurer que la regexp trouve la meme chose
parent adccbdba
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -31,8 +31,8 @@ function inc_prepare_recherche_dist($recherche, $table='articles', $cond=false, ...@@ -31,8 +31,8 @@ function inc_prepare_recherche_dist($recherche, $table='articles', $cond=false,
// traiter le cas {recherche?} // traiter le cas {recherche?}
if ($cond AND !strlen($recherche)) if ($cond AND !strlen($recherche))
return array("0 as points" /* as points */, /* where */ ''); return array("0 as points" /* as points */, /* where */ '');
$rechercher = false; $rechercher = false;
if (!isset($cache[$recherche][$table])){ if (!isset($cache[$recherche][$table])){
......
...@@ -132,21 +132,24 @@ function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serve ...@@ -132,21 +132,24 @@ function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serve
if (!strlen($recherche)) if (!strlen($recherche))
return array(); return array();
$preg = '/'.$recherche.'/' . $options['preg_flags'];
// Si la chaine est inactive, on va utiliser LIKE pour aller plus vite // Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
if (preg_quote($recherche, '/') == $recherche) { // ou si l'expression reguliere est invalide
if (preg_quote($recherche, '/') == $recherche
OR (@preg_match($preg,'')===FALSE) ) {
$methode = 'LIKE'; $methode = 'LIKE';
$q = sql_quote( $q = sql_quote(
"%" "%"
. str_replace(array('%','_'), array('\%', '\_'), $recherche) . preg_replace(",\s+,","%",str_replace(array('%','_'), array('\%', '\_'), trim($recherche)))
. "%" . "%"
); );
$preg = '/'.preg_replace(",\s+,",".+",trim($recherche)).'/' . $options['preg_flags'];
} else { } else {
$methode = 'REGEXP'; $methode = 'REGEXP';
$q = sql_quote($recherche); $q = sql_quote($recherche);
} }
$preg = '/'.$recherche.'/' . $options['preg_flags'];
$jointures = $options['jointures'] $jointures = $options['jointures']
? liste_des_jointures() ? liste_des_jointures()
: array(); : array();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter