|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Bonjour,
J'ai le problème suivant : je voudrais comparer le texte récupéré dans une BDD à une variable. Pour le moment, j'utilise : Code :
$q=mysql_query("SELECT categorie FROM ebooks_LH WHERE titre LIKE \"%$titre%\"") or die (mysql_error()); Merci ! |
|
|
00
|
|
|
#2 |
![]() ![]() |
Il suffit d'inverser le WHERE :
Code :
WHERE '$titre' LIKE '%' || titre || '%' La double barre verticale est l'opérateur de concaténation.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Merci.
Par contre ça ne marche toujours pas, je me demande si cela ne vient pas d'une recherche case sensitive ? |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Met ta requête dans une variable et fais-en un echo avant de l'envoyer au serveur pour voir son texte exact :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
ok il affiche bien la variable $title comme il faut
du coup je ne vois pas d'où vient le problème, en sachant que si $title et title sont identiques, ça marche bien Code :
SELECT categorie FROM ebooks_LH WHERE 'Naruto, Tome 45 : Konoha, théâtre de guerre !!' LIKE '%' || titre || '% |
|
|
00
|
|
|
#6 |
![]() ![]() |
Et qu'y a t-il comme données selon toi correspondantes dans la colonne titre ?
Je viens de faire un petit test. Il semble que MySQL n'aime pas l'opérateur de concaténation normalisé || ! Essaie comme ceci : Code :
WHERE '$titre' LIKE CONCAT('%', titre, '%')
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Dans la colonne titre il y a, dans l'exemple cité :
"Naruto, tome 45" Sinon la nouvelle suggestion ne fonctionne pas |
|
|
00
|
|
|
#8 | ||
![]() ![]() |
Erreur ou pas de résultat ?
Je viens de tester sur une de mes tables et ce principe fonctionne. Dans la table j'ai un username = 'plemenager' et la requête suivante me donne le bon résultat : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Code :
dès que j'utilise ton code, ça ne fait pas d'erreur, juste pas de résultat. |
||
|
|
00
|
|
|
#10 |
![]() ![]() |
Ton code fonctionne si $title est égal ou inclus dans titre mais tu demandais l'inverse il me semble.
Je ne comprends pas pourquoi mon code ne fonctionnerait pas chez toi. As-tu testé la requête directement dans MySQL avec des valeurs qui devraient logiquement retourner un résultat ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#11 | ||
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Oula, oui c'est curieux, ta requête directement effectuée dans MySQL ne retourne aucun résultat.
Code :
|
||
|
|
00
|
|
|
#12 | ||
![]() ![]() |
Il faudrait te décider sur le sens de la condition !
Au début, tu as fait une requête avec ce WHERE : Ceci suppose que la variable $titre soit égale ou incluse dans la colonne titre. Si titre = 'Naruto, tome 45' et $titre = 'Naruto' => OK Si titre = 'Naruto' et $titre = 'Naruto, tome 45' => KO Mais tu as dit toi-même dans ton premier message que c'est le deuxième cas qui te préoccupe : Citation:
Code :
WHERE '$titre' LIKE CONCAT('%', titre, '%') Si $titre = 'Naruto' et titre = 'Naruto, tome 45' => KO Après avoir essayé ma requête directement dans MySQL, tu dis dans ton dernier message : Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#13 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Non, non, je me suis mal exprimé.
Quand je dis "dans la base il y a le mot Naruto", il y a dans la base : "Naruto, tome 44" et dans la variable $titre : "Naruto, Tome 44 : les aventures blablabla" |
|
|
00
|
|
|
#14 |
![]() ![]() |
Si le jeu de caractères utilisé dans la BDD est sensible à la casse et si le texte que tu viens de donner est strictement celui-là, c'est normal que tu n'aies pas de réponse avec ma requête !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Si ça vient de ça, je fais comment, je mets UPPER() avant titre et $titre dans la requête ?
|
|
|
00
|
|
|
#16 |
![]() ![]() |
Tu peux en effet essayer comme ça ou jouer avec COLLATE.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#17 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 60 ![]() |
Code :
"SELECT categorie FROM ebooks_LH WHERE UPPER('$titre') LIKE UPPER(CONCAT('%', titre, '%'))"
pas d'erreur mais toujours pas d'affichage... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com