Bonjour.
Je cherche à enregistrer une chaine de caractères contenue dans un DIV contenteditable dans une base SQL. Cela fonctionne correctement sauf quand cette chaine comporte les caractères ">", "<" et "&".
Voici une portion de mon code html :
Voici mon code JAVASCRIPT qui correspond à la fonction "save();" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> etc... </head> <body> <input type="image" onclick="save();" src="./image/save.png" /> <div id="texte" contentEditable ></div> etc... </body> </html>
Voici une portion de mon code PHP :
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 // reponse XHR et affichage du contenu du Div function traitementSave() { if(objetXHR50.readyState==4) { if(objetXHR50.status==200) { alert ("Sauvegarde OK"); } } } // lien avec le fichier PHP function save() { var texte = document.getElementById("texte").innerHTML; var parametres = "texte="+texte; objetXHR50 = creationXHR(); objetXHR50.onreadystatechange = traitementSave; objetXHR50.open("post","./save.php",true); objetXHR50.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); objetXHR50.send(parametres); }
Donc, comme je le disais, si je saisie "Tout va bien dans le meilleur des mondes !", l'enregistrement s'effectue correctement dans ma base de donnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $texte = $_POST['texte']; mysql_query (" INSERT INTO maTable (texte) VALUES ('$texte') ");
Si je saisie "Le chiffre 7 > 3", l'enregistrement retourné est "Le chiffre 7".
Pour mon code PHP, j'ai essayé ceci :
Mais malheureusement, l'enregistrement dans la base est bloqué au caractère ">".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $texte = htmlspecialchars($_POST['texte']); mysql_query (" INSERT INTO maTable (texte) VALUES ('$texte') ");
Dernières précisions :
- Grâce à la commande "execCommande", j'insère du style dans mon DIV (exemple : <span style="font-weight: bold;">mon texte</span>) et ça fonctionne.
- J'ai essayé de créer un bouton permettant d'insérer le code ASCII ou le code HTML du caractère "&" et ainsi obtenir (exemple : mon texte & un autre texte) ou (exemple : mon texte & un autre texte)
Ceci n'a pas réglé mon problème...
Quelqu'un peut-il m'aider svp ?
Partager