[RESOLU] résultat de variable identique mais qui ne fonctionne pas dans une requete sql après un regex ?

Eléphant du PHP | 197 Messages

18 avr. 2017, 20:31

Bonjour, je suis en train de faire un bouton rechercher mais je rencontre une difficulté. Voici mon code :
$recherche = "bouteille mer";
$recherche = preg_replace("#[0-9]|\b€\b|\bvotre\b|\bnom\b|\bgr\b|\bmm\b|\bcm\b|\bkg\b|\b, \b|\b ,\b|\bson\b|\bsa\b|\bce\b|\bse\b|\bses\b|\bfaire\b|\bces\b|\bpour\b|\bun\b|\bune\b|\ba\b|\ble\b|\bla\b|\bles\b|\bde\b|\bdes\b|\bque\b|\bqui\b|\bd\b|\bj\b|\bl\b|\bm\b|\bn\b|\bs\b|\bt\b|\bperson{1,}alis(able|ees|er|ez|es|ee|e)\b|\brecherch(ez|er|e)\b|\bcadeau(|x)\b#", " ", $recherche);
$recherche = trim($recherche);




$articles_sql = $bdd->prepare("
						SELECT id, titre, url, ancien_prix, prix, image, date, supports, choix_supports
						FROM cadeauxplaisir_articles
						WHERE keywords LIKE :keywords
						AND afficher = :afficher
						ORDER BY ordre
						LIMIT 0,100
						");
$articles_sql->execute(array(
						'keywords' => '%' . $recherche . '%',
						'afficher' => 1
						));
$articles_sql->setFetchMode(PDO::FETCH_ASSOC);

while( $articles = $articles_sql->fetch() )	{

	include("/includes/boite_articles.php");
}
lorsque j'utilise le terme "bouteille mer", ma requête trouve bien un résultat.
Par contre si j'utilise le terme "bouteille a la mer" pourtant normalisé par une regex afin de le transformer en "bouteille mer", cela ne donne aucun résultat alors qu'il s'agit exactement du même contenu de variable.
J'ai dabord pensé à un caractèe invisible et j'ai donc ajouter un trim() sur ma variable mais c'est la même chose. Impossible de trouver le problème.

Pouvez-vous m'aider svp ?
Cadeaux personnalisés d'après photos, gravure...
http://www.cadeauxplaisir.com/

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7420 Messages

18 avr. 2017, 22:40

Bonjour,

Après avoir transformé "bouteille a la mer", fait un var_dump() de $recherche et tu comprendras le problème ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 197 Messages

18 avr. 2017, 23:47

Waah vraiment super merci beaucoup c'est exactement ce qu'il me fallait. Pour ceux que ca interesse, afin de supprimer les espaces en trop j'ai utilisé :
$recherche = preg_replace("# +#", " ",$recherche);

Encore merci ! ;)
Cadeaux personnalisés d'après photos, gravure...
http://www.cadeauxplaisir.com/