Bonjour
Autant prévenir tout de suite, je vais être un peu long mais c'est pour la bonne compréhension de mon problème.
J'ai réalisé une page composée d'un formulaire, lui même composé de 2 input et 2 textarea et d'1 bouton Submit. L'un de ces textarea est "piloté" par NicEdit (enrichissement de texte du type : Bold, Italic, Underline...).
Etant donné que je veux pouvoir soumettre ce formulaire sans avoir à rafraichir la totalité de ma page, j'ai utilisé de l'Ajax afin que les données soient envoyer au serveur web sur un script PHP.
Le script PHP traite les données reçues, les enregistre dans une base SQL puis renvoi le contenu de ces variables à la page du formulaire.
LE PROBLEME
Bref, rien de bien compliqué (à priori). Lors de l'enregistrement dans la base, seuls les 2 input et 1 textarea s'enregistrent correctement. Par contre, le textarea piloté par NicEdit n'est pas pris en compte.
LES SCRIPTS
Le formulaire HTLM
Les scripts Ajax
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <form method="POST"> <input id="redact_titre" type="texte" /> <textarea id="redact_chapo"></textarea> <textarea id="redact_article"></textarea> <!-- Le TEXTAREA QUI POSE PROBLEME --> <input id="redact_signature" /> <input name="articleSub" id="articleSub" type="button" onclick="jouer();" value="Enregistrer" /> <img id="charge" src="chargeur.gif" /> </form>
Le Script PHP de traitement
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 /* FORMULAIRE ARTICLE **************/ function jouer() { objectXHR = creationXHR(); var parametres = "redact_titre="+ codeContenu("redact_titre")+"&"+"redact_chapo="+ codeContenu("redact_chapo")+"&"+"redact_article="+ codeContenu("redact_article")+"&"+"redact_signature="+ codeContenu("redact_signature")+"&"+"redact_cookie="+ codeContenu("redact_cookie"); objectXHR.open("post","article_post.php", true) ; objectXHR.onreadystatechange = actualiserPage; objectXHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); document.getElementById("articleSub").disabled= true; document.getElementById("charge").style.visibility="visible"; objectXHR.send(parametres); } /* ENRICHISSEMENT TEXTE NicEdit ****/ bkLib.onDomLoaded(function() { var editor = new nicEditor({buttonList : ['justify','bold','italic','underline','subscript','superscript','link','unlink','removeformat','save'], onSave : function(content, id, instance) { alert(content); }}).panelInstance('redact_article'); }); /* ACTUALISER ARTICLE **************/ function actualiserPage() { if(objectXHR.readyState == 4) { if(objectXHR.status == 200) { var nouveauResultat = objectXHR.responseText.split(":::"); remplacerContenu("redact_titre", decodeURI(nouveauResultat[0])); remplacerContenu("redact_chapo", decodeURI(nouveauResultat[1])); remplacerContenu("redact_article", decodeURI(nouveauResultat[2])); remplacerContenu("redact_signature", decodeURI(nouveauResultat[3])); remplacerContenu("redact_cookie", decodeURI(nouveauResultat[4])); document.getElementById("articleSub").disabled= false; document.getElementById("charge").style.visibility="hidden"; } else { var erreurServeur = objectXHR.responseText="Erreur serveur"; } } } /* TEST NAVIGATEUR *****************/ function testerNavigateur() { objectXHR = creationXHR(); if(objectXHR==null) { document.getElementById("articleSub").disabled= true; var erreurNavigateur="Erreur Navigateur : Creation d'objet XHR impossible"; } document.getElementById("articleSub").onclick=jouer(); } /* TEST DU NAVIGATEUR AU CHARGEMENT */ window.document.onload=testerNavigateur();
CONCLUSION
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 <?php require ("connect_bdd_sql.php"); header("Content-Type: text/plain ; charset=utf-8"); header("Cache-Control: no-cache, private"); header("Pragma: no-cache"); sleep(2); $redact_titre=$_REQUEST['redact_titre']; $redact_chapo=$_REQUEST['redact_chapo']; $redact_article=$_REQUEST['redact_article']; $redact_signature=$_REQUEST['redact_signature']; mysql_query ("INSERT INTO extra_archive (arch_titre, arch_chapo, arch_article, arch_auteur) VALUES ('$redact_titre', '$redact_chapo', '$redact_article', '$redact_signature')"); mysql_close(); $resultat=$redact_titre.":::".$redact_chapo.":::".$redact_article.":::".$redact_signature; echo $resultat; ?>
Vous remarquerez dans le script JS "Enrichissement de texte NicEdit" que j'effectue une alerte afin de comprendre comment récupérer la variable dont j'ai besoin. Bien entendu, ceci est un test et ne constitue pas le script définitif.
J'aimerais savoir comment transmettre le contenu intégral de cette "Alerte" à mon script PHP afin que l'enregistrement s'effectue correctement.
Merci de m'avoir lu jusqu'à la fin et merci par avance, de vos réponses.
Partager