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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

Je vous remercie par avance si vous avez des pistes pour m'aider

P.S : Mes données sont en UTF8 en base