encodage et requete sql

oceane751
Invité n'ayant pas de compte PHPfrance

11 avr. 2012, 23:57

Bonjour,

J'ai un problème d'encodage avec mon php/mysql

voici mon code php
include("connect.php");
$pseudo = $_POST['pseudo'];
$requete = "SELECT * FROM personne WHERE pseudo='".$pseudo."'"; 
$quer = mysql_query($requete); 
 $row = mysql_fetch_array($quer);
if($row) {
	echo "pseudo déjà utilisé";
}
else {
	echo "OK";	
}
dans mon fichier html j'ai bien :
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
ma bdd mysql est bien en utf-8
quand je fais un echo de la requete j'ai ça : SELECT * FROM personne WHERE pseudo='noémie'

bref, je tourne en rond depuis un bout de temps déjà ... :?

quelqu'un pourrait m'aider?
merci beaucoup

ViPHP
AB
ViPHP | 5818 Messages

12 avr. 2012, 00:16

Il faut suivre toutes les étapes de ce tuto

Et donc en plus de ce que tu as fais il faut mettre cette ligne en haut de ton code php :
header('Content-Type: text/html; charset=UTF-8');
et celle-ci après ta connexion à la base et AVANT ta première requête
mysql_set_charset ("utf8");
pour plus de détails regardes le tuto

oceane751
Invité n'ayant pas de compte PHPfrance

12 avr. 2012, 00:51

merci pour ta réponse
mais quand je mets ça
header('Content-Type: text/html; charset=UTF-8');
ça fonctionne !

le hic est que si je rentre "noémie", ça me dit que je peux prendre ce pseudo alors qu'il existe déjà
si je rentre : "noemie", il me dit que le pseudo est déjà pris!
alors que dans la BDD c'est "noémie" et non "noemie"

Donc je tourne en rond, j'ai plus de cheveux, je ne sais plus quoi faire ...

ViPHP
AB
ViPHP | 5818 Messages

12 avr. 2012, 00:57

Cela n'a rien à voir avec l'encodage. C'est dû au fait que le champ de ta bdd a l'interclassement "utf-8 general_ci" qui est à la fois casse insensitive et insensible aux accents. Si tu veux faire une différence utilise l'interclassement utf8_bin :wink: