Recherche sur plusieurs mots
Résolu
barale61
Messages postés
1214
Date d'inscription
Statut
Membre
Dernière intervention
-
barale61 Messages postés 1214 Date d'inscription Statut Membre Dernière intervention -
barale61 Messages postés 1214 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essai de faire une recherche sur plusieurs mots de cette façon:
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.
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:
- Recherche sur plusieurs mots
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche photo - Guide
- Où sont stockés les mots de passe sur android - Guide
- Retrouver un film avec des mots - Télécharger - Divers TV & Vidéo
- Je recherche une chanson - Guide
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]
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]
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
Je en comprend pas le lien entre le fait de vouloir faire une recherche et l'utilisation d'un str_replace
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
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
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
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
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