Page 1 sur 1
Comparer un champ avec une chaine convertie directement dans
Posté : 28 août 2007, 13:43
par Tong
Hello,
J'ai besoin de récupérer un champ seulement si sa valeur concorde avec une certaine chaine.
Seulement ma chaine est convertie et n'a plus d'accents afin de pouvoir passer proprement par URL.
Il faudrait donc que je test avec le champ lui aussi converti. Seulement je ne vois pas comment faire ça directement dans la requête.
Ma requete :
Code : Tout sélectionner
SELECT products_name FROM products WHERE products_name = " . $chaine . "
Qui ne retournera jamais rien puisse que product_name est accentué alors que $chaine ne l'est pas.
Il faudrait pouvoir faire quelque chose comme :
Code : Tout sélectionner
SELECT products_name FROM products WHERE convertion(products_name) = " . $chaine . "
Merci de votre aide
ma SGBD : mySQL.
Posté : 28 août 2007, 14:03
par zigz4g
Salut.
Pourquoi ne pas nettoyer ton résultat de requête avec la même fonction qui te nettoie ton nom dans l'url ?
Posté : 28 août 2007, 14:09
par Tong
Je ne veut retourner que les t-uples qui m'intéressent et donc mettre une clause de comparaison directement dans la requete.
Le but n'est pas d'avoir un résultat sans accents mais de faire la comparaison d'une chaine accentué avec la même désaccentué.
Enfin a priori j'ai trouvé la solution avec la fonction REPLACE()
http://www.toutestfacile.com/sql/cours/ ... ing_3.php5
Bon c'est pas encore codé, je ne mets pas résolu, je vais peut-être repasser par là
EDIT -----
C'est en fait TRANSLATE() qui est approprié
Posté : 28 août 2007, 14:10
par Payfu
Dans ta base de donnée, ta colonne est de quel type ?
Car, peut-être veis-je dire une bétise, mais une colonne de type varchar se moque de la casse et donc des accents.
Posté : 28 août 2007, 14:24
par Tong
A ouais effectivement, ca marche sans conversion (bon ça marche aussi avec

)
J'ai donc juste les espace à gérer et ça ca pose pas de problème.
Merci
Et donc un champ de type varchar stocke les chaines en conservant les accents mais n'en tiens pas compte ?
Posté : 28 août 2007, 14:48
par Ryle
Petite précision, c'est
MySQL qui n'en tient pas compte dans ses recherches et comparaisons. Ce n'est absolument pas une propriété du varchar et toute autre base de données exigera une correspondance exacte.
Mais sinon pourquoi ne pas conserver la chaine d'origine quelque part ? au pire tu peux faire un urlencode()/urldecode() pour passer un paramètre via l'url sans l'altérer (ou l'envoyer en post, ou le coller en session, ...) du coup tu pourrais faire une recherche à l'identique et t'éviter des transformations de chaine à la volée qu'il te faudra maintenant en sql et en php

Posté : 28 août 2007, 15:01
par Tong
Je reconnais que je pourrais me simplifier la vie avec un bete urlencode(), mais ca va peut-etre être plus pratique lorsque je mettrais en place l'url rewritting si mes variables ne ressemblent pas à %20hop%50%_la.
Et merci de la grande précision
