Sauvegarder le texte editer par tinymce

kikoi1 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
 Mas -
Bonjour,
j'ai intégrer un editeur de texte à tinylce et je voudrai pouvoir enregistrer ce texte et pouvoir le réafficher comment doit-je my prendre??
Faut-il créer une table dans ma base de données avec les champs id et texte?
Comment pui-je aussi valider le texte écrit??
J'ai créer un bouton valider mais après je ne c'est pas quoi faire.
A voir également:

3 réponses

Dadas
 
Bonjour,

Oui vous pouvez commencer par créer une bdd avec les champs nécessaires.

Le bouton SAVE (1er boton à gauche) de l'interface tinyMCE envoie le formulaire en post, et vous récupérez la valeur du champ correspondant :
formulaire.php
<form name="form1" method="post" action="traitement_formulaire.php">
	<input id="id" type="hidden" value="" />
	<textarea name="content" style="width:100%">
	</textarea>
</form>


Il suffit de bien pointer vers le fichier de votre choix, p.ex. traitement_formulaire.php (mis à la place de "somefile", me semble-t-il).

Pour pouvoir afficher des textes différents, il est judicieux de mettre dans le formulaire un identifiant unique, d'où le champ caché avec id="id", qui ne nous sert pas encore...

Pour enregistrer un nouveau texte mis en forme, le fichier traitement_formulaire.php récupère le textarea :

traitement_formulaire.php
<?
if ( isset($_POST["content"]) ) {
        $textarea_content = $_POST["content"];
/*
//
Sauvegarder mysql_real_escape_string($textarea_content) dans un champ de la base de donnees, avec id unique (p.ex AUTOINCREMENT)
//
/*
 }
else {
        ;
 }
?>


Pour éditer un texte existant, le "réinjecter" dans la page contenant le formulaire avec du PHP et du javascript, en y postant l'id du texte :

formulaire.php
<?
if ( isset($_POST["id_to_edit"]) ) {
        $id_to_edit = $_POST["id_to_edit"];
/*
//
Recuperer le code tinyMCE de la table correspondante dans la bdd, selon l'id unique $id_to_edit,
stocker dans une variable, p.ex $tinyMCE_code
//
/*
$tinyMCE_code = str_replace('"','\\"',$tinyMCE_code);
// faire preceder les guillemets par des antislashes, attention aux apostrophes ' " ' et ' \\" '
$tinyMCE_code = str_replace(array("\r","\n"),"",$tinyMCE_code);
// remplacer les retours chariot par rien du tout (cette fois, delimiter les chaines par des guillemets)
?>
<html>
...
...
<script type="text/javascript" src="dossier_js/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
// initialisation tinyMCE
...
function id_to_edit() {
//
	document.form1.content.value = "<? echo $tinyMCE_code; ?>";
	document.getElementById("id").value = "<? echo $id_to_edit; ?>";
	//
                // la fonction tinyMCE met a jour l'iframe à partir de la valeur du textarea, et admet l'objet 
                // textarea comme parametre
                //
	var content_id = document.form1.content;
	//
	tinyMCE.activeEditor.load(content_id);
 }
function edit_get_put_init() {
<?
if ( isset($id_to_edit) ) {
                echo "id_to_edit();\n";
  }
else {
                echo ";\n";
  }
?>
 }
</script>
</head>
<body onload="edit_get_put_init();">
...
<form name="form1" method="post" action="traitement_formulaire.php">
	<input id="id" type="hidden" value="" />
	<textarea name="content" style="width:100%">
	</textarea>
</form>
...
<!--
ici on place le bouton pour modifier le 1er texte (il faut un enregistrement avec id=1 dans la bdd !)
-->
<form name="form_edit1" method="post" action="formulaire.php">
	<input name="id_to_edit" type="hidden" value="1" />
	<input name="submit1" type="submit" value="Modifier texte 1" />
</form>
...
</body>
</html>
<?
else {
// pas de formulaire envoye
 }
?>


PS : bien remplacer dans le 1er <script> le src en fonction du dossier où se trouve la biblio tinyMCE

Bon ça va jusqu'ici ?

Tenez-moi au courant, à bientôt
4
Dadas
 
oui bon à la fin c'est :

formulaire.php...
...
<?
 }
else {
// pas de formulaire envoye
 }
?>


(oublié l'accolade fermante du if, désolé)

A bientôt
0
ElVisit0r
 
Très intéressant, merci pour ce post!

Je me demandais s'il était possible d'éditer de la même manière un fichier txt ou inc.php par exemple afin de le modifier plutôt que d'avoir recours à une bdd?... et dans l'affirmative, ceci nécessite t'il une importante modification de code posté plus haut?

Novice, je procède à quelques essais mais suis confronté à un 2 problèmes: je peux bel et bien créer un fichier txt via tinymce mais lorsque j'ai quitté l'interface et que j'y reviens le fichier initialement créé n'y apparaît plus... or je souhaite pouvoir éditer le texte inséré dans le fichier cible la première fois.

Je peux bien écrire à nouveau dedans mais alors le nouveau texte s'ajoute au précédent... ce qui n'est pas vraiment le résultat escompté! :(

Merci beaucoup pour votre aide!
0
ElVisit0r
 
J'ai solutionné une partie du problème, c'est à dire que pour que le contenu de la page initialement créée réapparaisse pour pouvoir le modifier j'ai utilisé "include" dans la balise textarea...

<textarea id="1" name="1" rows="30" cols="100" style="width: 70%">
<?php include('folder/article.txt'); ?>
</textarea>



... par contre il faudrait qu'au moment de sauver les modifications apportées le fichier txt cible soit préalablement vidé afin d'éviter que le texte rectifié s'ajoute au précédent, à la queue leu leu...
0
ElVisit0r
 
j'ai finalement utilisé la fonction unlink pour effacer le fichier avant qu'il ne soit recréé avec le nouveau texte via tinymce... de cette manière il n'y a plus de cumul, le nouveau texte ne s'ajoute plus au précédent car le précédent est effacé avant que le nouveau fichier contenant le nouveau texte soit créé

si cela peut-être utile à quelqu'un:


<?php print(stripslashes($_POST['1']))?>


<p><?php

$entry=stripslashes($_POST["1"]);
$file="folder/article.txt";
unlink($file);
$open=fopen($file,"a");

if($open){         
	fwrite($open,$entry);
        fclose($open);
echo(" nouveau texte ecrit! ");
}
?></p>
0
Mas
 
Excellent merci !
0
Profil bloqué
 
Bjour,Que signifie déjà "tinylce" Svp?
0
kikoi1 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention  
 
c 'est un editeur de texte que l'on peut incorporer à différentes pages.
0