[Javascript/AJAX] Pb de caractères spéciaux

Fermé
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 28 avril 2010 à 14:20
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 28 avril 2010 à 17:55
Bonjour à tous.

Je suis en train d'apprendre à utiliser l'AJAX et j'ai une question sur les caractères spéciaux.

J'explique le truc : dans ma base de données j'ai entre autres 2 tables : une contient des noms de rubriques, l'autre des article. Un article est forcément attaché à une rubrique.

Pour faire un test, j'ai fait un select en xhtml qui contient toutes les rubriques.
Lorsqu'on en sélectionne une, il y a un second select qui apparait avec dedans tous les articles de la rubrique choisie.

Pour faire ça j'ai donc utilisé l'AJAX. Tout fonctionne bien comme je veux.
Le soucis, c'est que dans un article j'ai un caractère spécial : &


Jusque là je n'avais eu aucun souci avec ça. Mais là, ce caractère spécial a empêché le script de bien fonctionner (le second select est apparu mais il était vide). Quand j'ai enlevé ce caractère tout est bien passé.

Ma question est donc : comment, en javascript ou en php, ignorer les caractères spéciaux contenus dans une bdd ?

Merci.


A voir également:

1 réponse

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
28 avril 2010 à 14:24
Juste pour vérifier, tu pourrais pas mettre le code de la page php appelée par l'AJAX et qui te renvoit la liste déroulante ? (ou du moins, les éléments à insérer dans la liste déroulante)
1
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
Modifié par Kopros le 28/04/2010 à 14:31
Voilà :

<?php 
session_start();  //je m'en étais servi mais là je pourrais l'enlever
include ("../action/_connexion2.php"); 
mysql_query("SET NAMES 'utf8'"); 
header("Content-Type: text/xml"); 
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 
echo "<list>"; 

$idRub = (isset($_POST["IdRub"])) ? htmlentities($_POST["IdRub"]) : NULL; 
  
 $sql="SELECT * FROM articles WHERE rub1=" . mysql_real_escape_string($idRub); 
 $appli=mysql_query($sql) or die("Erreur!"); 
 while ($result=mysql_fetch_array($appli)){ 
  echo "<item id=\"" . $result['id_article'] . "\" name=\"" . $result['titre1'] . "\" />"; 
 } 

echo "</list>"; 

?>


Ca me ressort une liste avec tous mes titres d'articles de la rubrique choisie. Ce code fonctionne si y'a pas de caractères spéciaux (les accents et espaces passent nickel).
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
28 avril 2010 à 14:36
Tu dis qu'il y a un problème, mais c'est quoi sa nature exacte ?
le name le l'item est tronqué ?
La liste de n'affiche plus ?
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
Modifié par Kopros le 28/04/2010 à 14:49
Voilà la liste ne s'affiche plus.

La console d'erreur de firefox me rapporte ceci :

Erreur : mal formé 
Fichier Source : http://127.0.0.1/ATR/tests/XMLHttpRequest_getListData.php 
Ligne : 1, Colonne : 93 
Code Source : 
<?xml version="1.0" encoding="utf-8"?><list><item id="57" name="Les parcours de Christophe & Nicolas" /><item id="58" name="Quelle intégration ?..." /><item id="59" name="Intégration scolaire en milieu ordinaire" /><item id="60" name="Les CLIS 1" /><item id="61" name="Le Projet Personnalisé de Scolarisation (PPS)" /><item id="62" name="Aménagement des examens" /><item id="63" name="Aménagement des concours de la fonction publique" /><item id="64" name="Étudiants handicapés" /><item id="66" name="DVD L'écolensemble" /><item id="67" name="Inscrivez votre enfant à l'école" /></list>



Comme tu vois l'erreur est dans la ligne <item id="57" name="Les parcours de Christophe & Nicolas" />


La colonne 93 est celle juste après le &.
Et rien le 2e select de la page principale reste vide.
Je viens de tester si on met le caractère spécial sur le 2e élément de la liste (là il est sur le 1er), même chose, rien ne s'afficher.
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
28 avril 2010 à 14:55
Je pense avoir compris ^^
Utilises les CDATA :
https://ljouanneau.com
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
Modifié par Kopros le 28/04/2010 à 15:43
Ok c'est très certainement ça. Merci, ça me permet d'avancer un peu !

Maintenant en fait mon souci c'est que je sais pas où placer les balises CDATA !

J'ai essayé de les mettre autours de la fonction qui récupère mes données sur la page principale, j'ai aussi essayé de les mettre dans ma page php qui prend les données :

echo "<item id=\"" . $result['id_article'] . "\" name=\"<![CDATA[" . $result['titre1'] . "/>]]\" >";

Mais ça ne fonctionne pas. J'ai visité plusieurs sites et je ne comprends pas comment faire pour que ça marche.

Apparemment faut mettre les balises CDATA dans le fichier XML, donc celui que je génère en php, mais quand je fais ça c'est encore pire y'a plus rien qui passe.

Tu pourrais m'aider stp ?
0