Comparaison Mysql buguée

Résolu/Fermé
Taku - 29 août 2012 à 10:52
 Taku - 30 août 2012 à 11:15
Bonjour,

Je suis devant un problème qui commence à me tendre les *...*.
je m'explique :

Le code suivant est une requête visant à comparer une variable a des champs de ma base de donnée pour en récupérer lID correspondant.

$Can=mysql_query("SELECT * FROM Categorie WHERE Categorie = '$Categorie'");
while ($Catn=mysql_fetch_array($Can)) {
	$CategorieID = $Catn['CategorieID'];
}


Le problème, j'en suis conscient, est que dans ma base de donnée, les champs on parfois des espaces ou des accents ("Accordéon chromatique"), est ces champs la ne sont pas reconnu, même si la variable contient EXACTEMENT la même chose. Pour tous les champs qui n'ont pas d'accent, sa passe. J'ai essayer les différentes méthode COLLATE ou de changer la syntaxe de ma requête mais la je bloque vraiment...

Un coup de main ?

Merci d'avance !!!

A voir également:

5 réponses

Ce doit être une question de jeu de caractères : il faudrait s'assurer que celui du champ soit le même que celui utilisé par la connexion à la base, et la même que celui utilisé pour la chaîne.
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
29 août 2012 à 13:30
Hello,

Et la méthode REPLACE permet peut-être de remplacer les accents par les caractères non accentués ?

Avec un UPPER pour éviter aussi les soucis de maj/min
0
Merci de vos réponses rapides !
Mihawk, le replace et le upper ne devrait pas avoir lieu d'être utilisé etant donner que ma chaine ne peut contenir que UN des champs de ma base (POUR SUR exactement le meme pour cause que je stock ces champs dans une liste deroulante et demande a l utilisateur d en choisir une.)

A.Nonymous, je pense effectivement que c'est une histoire de jeux de caractère, mais comme savoir lequel utilisé ?
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
29 août 2012 à 14:27
C'est simple, regarde si ta base est en UTF-8 ou en ISO ; et tu utilises alors sur ta variable POST une des méthode utf8_encode() ou utf8_decode() en fonction de tes besoins.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai compris. Effectivement ma base de donnée est encodée différemment de mon site (UTF-8 pour le site et Latin 1 pour la base). J'ai donc laissé ma base avec les accents et utilise iconv pour l'affichage correcte de mes données.

Merci pour votre aide !!
0