casse

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

Re: casse

par Dr@ke » 06 mars 2010, 18:59

Hey ohh :mrgreen:

Déjà c'est ma solution, jojo50000 a juste ajouté case, alors que lower fonctionne très bien.

De plus, AB t'a expliqué la raison, donc ce n'est plus un mystère :wink:
Et même donné, à mon avis, la meilleur solution à ton problème.

Re: casse

par medianeweb » 06 mars 2010, 18:33

Salut les gars
Merci de tous vos messages. Désolé, j'ai été un peu silencieux mais qq pb d'ordre privés qui ont relativisé ce léger problème php...
J'ai opté pour la solution de Jojo1000... qui fonctionne bien même si mon pb reste un mystère !
A +

Re: casse

par Cerbere1980 » 01 févr. 2010, 19:55

Cela vient de l'interclassement du champ de la table sur lequel tu fais la recherche :
Si tu as l'extension _general_ci la requête ne fera pas de distinction entre majuscules et minuscules.
Par contre avec l'extension _bin la recherche fera la différence entre majuscules et minuscules.
Et bien, je viens d'apprendre encore quelque chose.

Merci pour cette explication. ;)

Re: casse

par stealth35 » 01 févr. 2010, 15:52

bizarre j'ai pas ce problème la moi, ta quelle version de mysql ?
vérifie bien les valeurs (phpmyadmin -> variables) de :

collation connection
collation database
collation server

regarde l'interclassement dans ta table aussi, verifie que ton fichier php est dans le même encodage que tout ces valeurs

le top étant d'etre en utf8_unicode_ci partout, le petit "ci" apres les charset veux dire "case insensitive" donc insensible a la casse (trop dure la traduction :wink: )

Re: casse

par Dr@ke » 01 févr. 2010, 15:51

Donc dans l'exemple initial, plutôt que de mettre en minuscules le terme de la recherche et le champ de recherche comme l'ont proposés Dr@ke et jojo1000 (ce qui reste une alternative valable), on pourrait aussi garder la requête initiale :
SELECT NOM, PRENOM FROM CARACTERISIQUES WHERE LANGUES_COURANTES LIKE '%$langues_courantes%' "
et via phpMyAdmin par exemple modifier l'interclassement de la colonne "LANGUES_COURANTES" pour la mettre en _general_ci.
Bien plus logique et plus propre en effet AB.
Sinon pour mon alternative, cela serait plus logique aussi d'enlever le LIKE et de le remplacer par un =.
Mais la solution d'AB reste la meilleur solution.

Re: casse

par AB » 01 févr. 2010, 15:40

Message qui ne va pas aider mais moi avec ce genre de stucture.

Table carburant : Idcarburant, libelle.

Quand je vais ce genre de requête :

SELECT ca_libelle FROM garage.carburant WHERE ca_libelle LIKE '%diesel%'

Je reçois aussi bien Diesel, diesel que DIESEL.

Idem avec simplement :

SELECT ca_libelle FROM garage.carburant WHERE ca_libelle ='diesel'

Même résultat avec Mysql ou avec MSSQL.

Par contre, si j'ai un conseil... C'est de ne pas laisser les utilisateurs rentrer n'importe quoi et de définir au maximum les données qui vont être injecté dans la DB.
Cela vient de l'interclassement du champ de la table sur lequel tu fais la recherche :
Si tu as l'extension _general_ci la requête ne fera pas de distinction entre majuscules et minuscules.
Par contre avec l'extension _bin la recherche fera la différence entre majuscules et minuscules.

Donc dans l'exemple initial, plutôt que de mettre en minuscules le terme de la recherche et le champ de recherche comme l'ont proposés @Droke et jojo1000 (ce qui reste une alternative valable), on pourrait aussi garder la requête initiale :
SELECT NOM, PRENOM FROM CARACTERISIQUES WHERE LANGUES_COURANTES LIKE '%$langues_courantes%' "
et via phpMyAdmin par exemple modifier l'interclassement de la colonne "LANGUES_COURANTES" pour la mettre en _general_ci.

Re: casse

par jojo1000 » 01 févr. 2010, 13:24

$langues=strlower($langues_courantes);
SELECT NOM, PRENOM FROM CARACTERISIQUES WHERE lowercase(LANGUES_COURANTES) LIKE '%$langues%' "

Re: casse

par Cerbere1980 » 31 janv. 2010, 19:10

Message qui ne va pas aider mais moi avec ce genre de stucture.

Table carburant : Idcarburant, libelle.

Quand je vais ce genre de requête :

SELECT ca_libelle FROM garage.carburant WHERE ca_libelle LIKE '%diesel%'

Je reçois aussi bien Diesel, diesel que DIESEL.

Idem avec simplement :

SELECT ca_libelle FROM garage.carburant WHERE ca_libelle ='diesel'

Même résultat avec Mysql ou avec MSSQL.

Par contre, si j'ai un conseil... C'est de ne pas laisser les utilisateurs rentrer n'importe quoi et de définir au maximum les données qui vont être injecté dans la DB.

Re: casse

par Dr@ke » 30 janv. 2010, 15:37

$langues_courantes = strtolower($langues_courantes);
SELECT NOM, PRENOM FROM CARACTERISIQUES WHERE lower(LANGUES_COURANTES) LIKE '%$langues_courantes%' "
Un truc du genre?

casse

par medianeweb » 30 janv. 2010, 14:44

Hello à tous
Je me trouve face à un problème basique que je vous soumets humblement :-)
SELECT NOM, PRENOM FROM CARACTERISIQUES WHERE LANGUES_COURANTES LIKE '%$langues_courantes%' "

C'est censé me renvoyé le nom et le prénom d'une personne qui parle en langue courant la "$langues_courantes" saisi dans un formulaire.
Je vous avais prévenu, c'est basique...

Ca marche, MAIS en respectant la casse de saisi dans le formulaire.
C'est à dire que si on tape Anglais, ça renvoie seulement les personnes qui parlent Anglais, et pas ceux qui parlent anglais, ou ANGLAIS...
Evidemment, si on tape dans le formulaire anglais, ça ne renvoie pas ceux qui parlent Anglais et ANGLAIS, mais seulement ceux qui parlent anglais :-(

Vous avez une idée (basique) ?