2012-12-01 8 views
5

Ich habe versucht, den Inhalt von tinymce editor textarea für eine Weile in einer .txt-Datei zu speichern, aber ohne Erfolg. Dies ist mein HTML-Datei Code:Inhalt von tinymce in Datei speichern

<!Doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>TinyMCE example</title> 
    <meta name="description" content="HTML5 Basic template"> 
    <meta name="author" content="R Dickinson"> 
    <link rel="stylesheet" href="css/styles.css?v=1.0"> 
    <script src="js/scripts.js"></script> 
    <script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script> 
    <script type="text/javascript"> 
tinyMCE.init({ 
// General options 
mode : "textareas", 

}); 
</script> 
    <!--[if lt IE 9]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
</head> 
<body> 
    <header> 
<h1>test tinymce save</h1> 
    </header> 
    <nav> 
    </nav> 
    <section> 

<form method="post" action="test.php"> 
    <p> 
     <textarea name="content" style="width:50%"></textarea> 
     <input type="submit" value="Save" /> 
    </p>  
</form> 
    </section> 
    <aside> 
    </aside> 
    <footer> 
     </footer> 
</body> 
</html> 

Jetzt test.php

<?php 
/* 
* test.php 
    */ 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <title>test tiny mce</title> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <meta name="generator" content="Geany 0.21" /> 
</head> 

<body> 
<?php 

echo(stripslashes($_POST['content'])); 
?> 
<?php 
$file = "data.txt"; 
$fp = fopen($file, 'w'); 
$data =(stripslashes($_POST['content'])); 
fwrite($fp, $data); 
fclose($fp); 
?> 

</body> 

</html> 

Ich bin dankbar für nützliche Antworten :-) this-vielen Dank zu beheben

aktualisieren Nach der ersten Antwort unten habe ich triggerSave wie folgt hinzugefügt:

<script language="Javascript"> 
function submitForm() { 
tinyMCE.triggerSave(); 
document.forms[0].submit(); 
} 
</script> 

und

<form method="post" action="test.php"> 
<p> 
    <textarea name="content" style="width:50%"></textarea> 
    <!--<input type="submit" value="Save" />--> 
    <a href="javascript:submitForm();">Submit Form</a> 
</p>  

aber noch kein Erfolg ... Mehr Hilfe erhalten dankbar

UPDATE 2 Hier ist meine jQuery TinyMCE Version ist:

<!Doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Sample WebPage</title> 
    <meta name="description" content="HTML5 Basic template"> 
    <meta name="author" content="R Dickinson-see sitepoint etc"> 
    <link rel="stylesheet" href="css/styles.css?v=1.0"> 
    <script src="js/scripts.js"></script> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
     google.load("jquery", "1.3"); 
</script> 
<!-- Load jQuery build --> 
<script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script> 
<script type="text/javascript"> 
tinyMCE.init({ 
     mode : "textareas" 
}); 
</script> 
    <!--[if lt IE 9]> 
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
</head> 
<body> 
    <header> 
     <h1>Enter the main heading, usually the same as the title.</h1> 
    </header> 
    <nav> 
    </nav> 
    <section> 


<!-- OF COURSE YOU NEED TO ADAPT ACTION TO WHAT PAGE YOU WANT TO LOAD WHEN HITTING "SAVE" --> 
<form method="post" action="show.php"> 
     <p>  
       <textarea name="content" cols="50" rows="15">This is some content that will be editable with TinyMCE.</textarea> 
       <input type="submit" value="Save" /> 
     </p> 
</form> 

    </section> 
    <aside> 
    </aside> 
    <footer> 

    </footer> 
</body> 
</html> 
+2

Was ist das Problem? Wird die Datei erstellt? Ist es leer? Gibt der Server einen Fehler zurück? Ist $ _POST gefüllt? – jcjr

+0

Haben Sie Schreibrechte für die Datei? –

+0

Das Problem ist, dass Text, den ich in den Textbereich eingab, nicht in der Textdatei gespeichert wird! Ich habe die Datei data.txt bereits im Verzeichnis & es hat beschreibbare Berechtigungen. Ich teste dies mit IIS-Server in inetpub> wwwroot> Dankbar für weitere Hilfe – rpd

Antwort

0

Sie sollten Sie Ihre TinyMCE-Instanzen aktualisieren, bevor Sie Ihr Formular absenden. Verwenden Sie dieses javascript:

tinyMCE.triggerSave(); 

ich dies in der Regel in einer Funktion setzen und ruft es auf onsubmit Ereignisse der Form.

Es gibt bereits verschiedene Fragen zu diesem Thema in Stackoverflow.

+0

Hallo Vielen Dank für Ihre Antwort. Ich bin nicht sicher, was Sie meinen, besonders wenn ich TinyMCE-Editor (nicht CKEditor) verwende. Können Sie bitte etwas mehr mit TinyMCE-Code erklären? Danke – rpd

+0

Oh! Es tut mir Leid. Ich habe deinen Titel falsch gelesen! Bearbeitete die Antwort. – MahanGM

+0

Danke für Ihre Bearbeitung an TinyMCE von Ihrer ursprünglichen CKEditor-Instanz - Ich habe versucht, triggerSave zu implementieren, da ich meine Frage bearbeitet habe, aber noch keinen Erfolg .. – rpd

6

Die Frage selbst kommt auf:

Wie HTML-Inhalte von TinyMCE in eine Datei zu speichern.

Nun, zunächst einmal müssen Sie:

1) Inhalt von Editor Get
2) Senden Sie diesen Inhalt PHP-Skript
3) eine Funktion implementieren, die diese Inhalte in einer Datei speichern würde

Erste Inhalt
Stellen Sie sicher, dass es die Art und Weise bekommen sollte es funktionieren.

Zum Beispiel

<script type="text/javascript"> 

window.onload = function(){ 

    var btn = document.getElementById('SubmitBtn'); 

    btn.onclick = function(){ 

    //This MUST alert HTML content of editor. 
    alert(tinyMCE.activeEditor.getContent()); 
    } 
} 

</script> 

<input type="button" id="SubmitBtn" value="Get HTML content"/> 

Senden Inhalt PHP-Skript

Alles, was Sie tun müssen, ist tinyMCE.activeEditor.getContent() zu PHP-Skript Wert des Verfahrens zu senden.

Nun, Sie sollten Jquery-AJAX dafür verwenden.

Angenommen, Sie jquery.js in Script-Tag im Kopfteil enthalten, wäre der nächste Schritt Senden JavaScript Variable PHP-Skript sein

Es wäre zu diesem ähnlich sein:

<script type="text/javascript"> 
$(function(){ 

    var url = "path_to_your_php_script.php"; 

    $("#SomeSubmitButton").click(function(){ 
    //"content" will PHP variable 
    $.post(url, { "content" : tinyMCE.activeEditor.getContent() }, function(respond){ 

     if (respond ==){ 
      alert('Content saved to file'); 
      return; 
     } else { 
      //Error message assumed 
      alert(respond); 
     } 
    }); 
    }); 

}); 

</script> 

PHP-Skript

Da wir "content" senden, wird dieses inaufgefüllt werdenSuperglobal

<?php 

if (isset($_POST['content'])){ 

    //This is what you want - HTML content from tinyMCE 
    //just treat this a string 

    if (save_html_to_file($_POST['content'], '/some_file.html')){ 
    //Print 1 and exit script 
    die(1); 
    } else { 
     die('Couldnt write to stream'); 
    } 
} 

/** 
* 
* @param string $content HTML content from TinyMCE editor 
* @param string $path File you want to write into 
* @return boolean TRUE on success 
*/ 
function save_html_to_file($content, $path){ 
    return (bool) file_put_contents($path, $content); 
} 

also nach der Ausführung dieses sollten Sie zurück alert mit Erfolgsmeldung erhalten.

+0

Danke metal_fan - Dein Code enthält eine Alarmbox mit HTML-Code - Könntest Du bitte den Code hinzufügen, um den Text von tinymce editor textarea in eine Textdatei zu speichern (meine ursprüngliche Frage!) Entschuldigung - Ich habe gerade deine Speicherung gesehen Dateifunktion! Ich werde es ausprobieren und implementieren und darüber berichten! Prost :-) – rpd

+0

Ich habe einige Zeit damit verbracht, dies ohne Erfolg zu beheben - kannst du meine 2 Dateien (.html/.php) mit deiner Code-Implementierung bearbeiten und sie hier posten? Ich bin sehr dankbar für Ihre weitere Hilfe-danke – rpd

+0

@rpd Sie müssen weder 'stripslashes()' noch 'fopen()' noch 'fwrite()' und den größten Fehler da draußen - haben Sie nicht um das Formular zu senden, wenn es eine tinyMCE-Instanz hat. Der HTML-Inhalt von tinyMCE ist sicher genug (tinyMCE filtert ihn selbst) – Yang

Verwandte Themen