Bonjour.
Voici en gros mon probleme:
J'ai un textarea, dans lequel j'écrit de facon normal (donc avec des \n é à...), un bouton apercu qui affiche a droite dans un div ce que j'ai mis dans le textarea, (la pas de souci ca fonctionne bien). Et enfin un bouton sauver qui active une fonction AJAX et envoi le contenue du textarea.
Le gros probleme étant que les caractéres accentué ne passe pas bien:
"salut é à" , arrive "salut é Ã".
Bon aprés ca je le met dans une base de donnée mais bon je pense pas que ca soit le probleme.
Voici les codes:
JS:
PHP sauver.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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 function apercu(){ var str=document.getElementById("texte").value; document.getElementById("apercu").innerHTML = str.replace(/\n/g, "<br />");} function sauver(table){ var xhr=null; var data=""; var docXML data = "texte="+document.getElementById("texte").value+"&table="+table; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.open("POST", "./php/sauver.php", true); //on définit l'appel de la fonction au retour serveur xhr.onreadystatechange = function() { if (xhr.readyState == 4){ }} xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1'); xhr.send(data); } function init(table){ var xhr=null; var data=""; var docXML data = "table="+table; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.open("POST", "./php/initialise.php", true); //on définit l'appel de la fonction au retour serveur xhr.onreadystatechange = function() { if (xhr.readyState == 4){ docXML= xhr.responseText; document.getElementById("texte").value = docXML; }} xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(data); }
Comme vous pouvez le voir j'ai essayé de faire une convertion mais je pense que le probleme arrive avant, enfin entre les deux pages.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <?php header('Content-Type: text/html; charset=ISO-8859-15'); require "./../../secure/config.php"; function convert($str){ $str=ereg_replace( "é", "é", $str); return $str; } function modifier($str, $table){ require "./../../secure/config.php"; $dblink=mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($db,$dblink); $query = "SELECT texte FROM ".$table.""; $strback = mysql_query($query,$dblink) or die (mysql_error($dblink)); $row = mysql_fetch_array($strback, MYSQL_NUM); $row[0]=addslashes($row[0]); $str=convert(addslashes($str)); mysql_db_query($db, "UPDATE ".$table." SET texte='$str', texteback='$row[0]'"); echo 'sauvegarder!!'; echo $str; } $str=nl2br ($_POST['texte']); $table=$_POST['table']; echo $str; modifier( $str, $table); ?>
Enfin le html:
J'ai aussi essayé de faire une convertion avant cela avec:
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" /> <title>Document sans nom</title> </head> <script type="text/javascript" src="./admin.js" > </script> <body> <table style="width: 1240px; border: 1px; border-color:#000000; background-color: #666666;"> <tr> <td colspan="4"></td> </tr> <tr> <td > </td> </tr> <tr> <td colspan="4" ><select id="table"> <option value="accueil">accueil</OPTION> <option value="entreprise">entreprise</OPTION> <option value="partenaires">partenaires</OPTION> <option value="eau">eau</OPTION> <option value="delais">delais</OPTION> </select></td> </tr> <tr> <td colspan="2" height="450px" > <TEXTAREA align="top" style=" vertical-align: top; top: 0px; height: 400px; width: 600px; background-color:#FFFFFF;" type="text" id="texte" name="texte" ></textarea><center><input type="button" value="initialiser" onclick="javascript:init(document.getElementById('table').value);" /><input type="button" value="apercue" onclick="javascript:apercu();" /><input type="button" value="sauver" onclick="javascript:sauver(document.getElementById('table').value);" /></center></td> <td colspan="2" ><div style="height: 620px; width: 620px; background-color:#FFFFFF;" id="apercu" name="apercu"></div> </td> </tr> </table> </body> </html>
JS
Mais au moment de l'envoi, le texte est coupé au 1er accent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function HTMLspecialhars(ch) { ch = ch.replace(/é/g, "é") ch = ch.replace(/è/g, "è") ch = ch.replace(/à/g, "à") ch = ch.replace(/ù/g, "ù") return ch }
Partager