Comparer un champ avec une chaine convertie directement dans une requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comparer un champ avec une chaine convertie directement dans une requete

par Tong » 28 août 2007, 15:01

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 :wink:

par Ryle » 28 août 2007, 14:48

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 :)

par Tong » 28 août 2007, 14:24

A ouais effectivement, ca marche sans conversion (bon ça marche aussi avec :wink:)

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 ?

par Payfu » 28 août 2007, 14:10

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.

par Tong » 28 août 2007, 14:09

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à :wink:

EDIT -----
C'est en fait TRANSLATE() qui est approprié

par zigz4g » 28 août 2007, 14:03

Salut.

Pourquoi ne pas nettoyer ton résultat de requête avec la même fonction qui te nettoie ton nom dans l'url ?

Comparer un champ avec une chaine convertie directement dans

par Tong » 28 août 2007, 13:43

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
:wink:

ma SGBD : mySQL.