[PHP-AJAX] Gestion des caractères spéciaux
Bonjour à tous,
N'ayant plus de cheveux à m'arracher, je viens vers vous en dernier recours.
Voila j'ai un souci lors du passage de chaîne de caractéres spéciaux (intra-PHP) et via AJAX.
Premier probléme :
Lors d'un appel d'une DIV via AJAX:
- je passe en paramétre une chaîne de caractéres avec un " ' ", la chaine se coupe au niveau du " ' "
- Je passe en paramétre une chaîne de caractéres avec un " " ", j'obtiens une erreur => missing ) after argument list <= Normal vu que le " est un caractére délimiteur de chaîne.
Voici l'appel :
Code:
1 2
|
aja.ajoutOption(\"caraVal\",\"".htmlentities($col[$i],ENT_QUOTES)."\"); aja.ajoutOption(\"cara\",\"".mySql_field_name($resultat,$i)."\"); |
Le htmlentities est le seul moyen de bien afficher mes caractéres spéciaux correctement dans ma div appele.
J'ai essayé les utf8_decode, encode et stripslashes mais rien n'y fait.
Deuxiéme probléme tout aussi marrant :
Je créé une liste déroulante et je compare chaque valeur à une valeur pour savoir quelle option doit être mis à "selected" mais avec les caractéres accentués la comparaison ne fonctionne pas, et sans caractéres spéciaux, cela fonctionne.
Mon appel à fonction :
Code:
1 2 3 4 5
|
$id="id".$_GET['tableVal'];
$formChg->affSelect("textChg",'','');
$formChg->affOption($id.",".$_GET['cara'],$_GET['tableVal'],stripslashes(utf8_decode($_GET['caraVal'])),'O');
$formChg->closeSelect(); |
Ma fonction (Je ne met que affOption, les autres servant à rien
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public function affOption($type,$table,$defSelect,$idPlusNom){
$requete = "SELECT DISTINCT $type from $table order by $type ";
$resultat=connection::execute($requete);
print("<option value=''>-------</option>");
while($col = mySql_fetch_array($resultat)){
if($col[1]<>""){
$var=htmlentities(utf8_decode($col[1]));
}else{
$var=htmlentities(utf8_decode($col[0]));
}
if($var!=""){
print("<option value='".$col[0]."/".$var."'");
}
if($var==$defSelect){
print(" selected ");
}
print(">".$var."</option>");
}
mySQL_free_result($resultat);
} |
Alors la variable $var s'affiche correctement à l'écran, lorsque je rajoute la variable $defSelect à l'affichage, celle-ci s'affiche bien aussi.
Je ne comprends pas :aie:
Je vous remercie par avance si vous avez des pistes pour m'aider :ccool:
P.S : Mes données sont en UTF8 en base