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
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
A voir également:
- Recherche sur plusieurs mots
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Recherche musique - Guide
- Identifiants et mots de passe - Guide
- Recherche par image - Guide
2 réponses
Utilisateur anonyme
Modifié par kyser soze le 10/04/2013 à 12:17
Modifié par kyser soze le 10/04/2013 à 12:17
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]
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
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
Je en comprend pas le lien entre le fait de vouloir faire une recherche et l'utilisation d'un str_replace
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
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
[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
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
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
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
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())
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())
[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
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
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
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
10 avril 2013 à 23:07
Ok merci.