Recherche sur plusieurs mots

Résolu/Fermé
barale61 Messages postés 1208 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 4 novembre 2024 - 8 avril 2013 à 18:08
barale61 Messages postés 1208 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 4 novembre 2024 - 10 avril 2013 à 23:07
Bonjour,


J'essai de faire une recherche sur plusieurs mots de cette façon:

$txt_recherche=str_replace(" ","%",$txt_recherche);


cela m'affiche le texte saisi ex:

oranges%vertes pour oranges vertes

sans me retourner de résultat alors qu'il existe et que cela fonctionne avec un seul mot.
A voir également:

2 réponses

Salut,

Pour moi il n'y à rien d'anormal au fonctionnement de la fonction str_replace:
Ici : str_replace(" ","%",$txt_recherche);

Le premier paramètre (" ") :est l'élément à chercher
Le 2d ("%") : l'élément de remplacement
3e la chaine dans laquelle s'exécute la recherche.

Du coup avec "oranges vertes" => il cherche l'espace le remplace par % est retourne la chaine.
Résolu? ===> [RESOLU]
0
Azraka Messages postés 252 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 5 juin 2014 13
10 avril 2013 à 13:35
Peux-tu expliquer précisément ce que tu veux faire ?

Je en comprend pas le lien entre le fait de vouloir faire une recherche et l'utilisation d'un str_replace
0
barale61 Messages postés 1208 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 4 novembre 2024 110
10 avril 2013 à 14:08
En fait je souhaite remplacer l'espace par % qui dans ma requête supprimerait les espace

SELECT recettes.recettes_id, recettes.recettes_titre, recettes.recettes_ingredients, recettes.recettes_preparation, recettes.recettes_conclusion, recettes.recettes_date FROM recettes WHERE recettes.recettes_titre LIKE %s OR recettes.recettes_ingredients LIKE %s OR recettes.recettes_preparation LIKE %s OR recettes.recettes_conclusion LIKE %s ORDER BY recettes.recettes_date DESC
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 10/04/2013 à 14:47
Salut barale61,

en supposant :

- que cette chaîne est utilisée dans le code Php par printf ou plutôt sprintf
- et que %s est, par conséquent le spécificateur de format où s'insère la chaîne composée de deux mots dont tu parles
- et que cette chaîne est insérée dans une requête SQL utilisée pour ta recherche
- et que tu utilises mysql

il faut que tes LIKE %s soient réécrits en LIKE '%s'

préalablement, il faudra t'assurer que ce qui est entré par l'utilisateur est échappé, pour éviter les petits malins (avec mysql : https://www.php.net/manual/fr/function.mysql-real-escape-string.php ou http://www.php.net/manual/fr/mysqli.real-escape-string.php).

note que je ne vois pas l'intérêt de mettre un "%" à la place de l'espace, sauf si tu veux qu'en tapant "oranges vertes" on donne aussi un résultat "oranges bleues et pommes vertes"

Si j'étais toi, je n'utiliserai pas de str_replace.


Dal
0
Azraka Messages postés 252 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 5 juin 2014 13
10 avril 2013 à 15:03
Encore un poil plus d'explications serait bien, là ça fait beaucoup de supposition.

Et en passant mysql_real_escape_string n'est pas une très bonne solution, mieux vaut utiliser l'extension PDO (et ensuite soit des bindValue()/bindParam(), soit un quote())
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 10/04/2013 à 17:39
je te l'accorde, c'est plus de l'induction que de la déduction (et pour mysql je l'ai jouée "boule de cristal" :-P)

ma réponse est aussi une façon de dire à notre ami barale61 qu'il nous fait des cachoteries en nous cachant plein de choses qui rendent sa question initiale incompréhensible.

pour PDO, c'est par souci de faire un code plus portable que le préfères à mysqli.real-escape-string que j'indiquais aussi dans mon message ? Il faudrait alors préciser à notre ami que PDO->quote va ajouter les quotes autour du contenu échappé, et que dans ce cas, il n'a pas à les ajouter à sa requête.

mais ce sont encore des suppositions, donc laissons barale61 s'exprimer :-)


Dal
0
barale61 Messages postés 1208 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 4 novembre 2024 110
10 avril 2013 à 23:07
Ok merci.
0