2012-12-01 26 views
5

Ho cercato di salvare il contenuto textarea dell'editor di tinymce in un file .txt per un po ', ma senza successo ancora. Questo è il mio codice html file:Salvataggio del contenuto di textarea su file

<!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> 

Ora 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> 

Sono grato per risposte utili per risolvere questo problema, molte grazie :-)

Aggiornamento Dopo la prima risposta di seguito ho aggiunto triggerSave come:

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

e

<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>  

ma ancora senza successo ... Altro aiuto riconoscente ricevuto

UPDATE 2 Ecco la mia versione di jQuery TinyMCE:

<!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

Qual è il problema? Il file è stato creato? È vuoto? Il server restituisce qualche errore? $ _POST è pieno? – jcjr

+0

Hai i permessi di scrittura sul file? –

+0

Il problema è che il testo che inserisco nella textarea non viene salvato nel file di testo! Ho il file data.txt già nella directory e ha permessi scrivibili. Sto testando questo con il server IIS in inetpub> wwwroot> Grato per ulteriore aiuto – rpd

risposta

0

È dovrebbe aggiornare le istanze di TinyMCE prima di inviare il modulo. Utilizzare questa javascript:

tinyMCE.triggerSave(); 

Io di solito messo questo in una funzione e chiamarlo sul onsubmit caso di modulo.

Esistono già diverse domande su questo argomento in Stackoverflow.

+0

Ciao grazie per la tua risposta. Non sono sicuro di cosa intendi, specialmente perché sto usando l'editor TinyMCE (non CKEditor). Puoi spiegare un po 'di più per favore con il codice TinyMCE? Grazie – rpd

+0

Oh! Mi dispiace. Stavo leggendo il tuo titolo sbagliato! Modificato la risposta. – MahanGM

+0

Grazie per la tua modifica a TinyMCE dall'istanza CKEditor originale - Ho provato a implementare triggerSave mentre modificavo la mia domanda ma non ho ancora avuto successo .. – rpd

6

La domanda stessa si riduce a:

Come risparmiare contenuto HTML di TinyMCE in un file.

Beh, prima di tutto, è necessario:

1) Ottenere il contenuto di editor di
2) Invia questo contenuto di script PHP
3) Implementare una funzione che avrebbe salvato il contenuto in un file

ottenere contenuti
assicurarsi che si stanno ottenendo nel modo in cui dovrebbe funzionare.

Per esempio,

<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"/> 

Invio di contenuto a script PHP

Tutto quello che dovete fare è inviare valore del metodo tinyMCE.activeEditor.getContent() di script PHP.

Bene, dovresti usare Jquery-AJAX per quello.

Si supponga di aver incluso jquery.js nel tag script nella sezione head, il passo successivo sarebbe invio variabile JavaScript di script PHP

Sarebbe simile a questa:

<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 script

Poiché stavamo inviando "content" questo verrà popolato in $_POST superglobale

<?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); 
} 

Così, dopo l'esecuzione questo si dovrebbe tornare alert con il messaggio di successo.

+0

Grazie metal_fan-il tuo codice fornisce un avviso con codice html al suo interno-potresti aggiungere il codice per salvare il testo da textin editor di tinymce a un file di testo (la mia domanda originale!). Ha scuse-Ho appena visto il tuo salvataggio su funzione di file! Proverò a implementarlo e riferirei! Saluti :-) – rpd

+0

Ho passato un po 'di tempo a cercare di risolvere questo problema senza successo: puoi modificare i miei 2 file (.html/.php) con l'implementazione del codice e pubblicarli qui? Ti sono molto grato per il tuo ulteriore aiuto - grazie – rpd

+0

@rpd non hai bisogno di usare 'stripslashes()' né 'fopen()' né 'fwrite()' e l'errore più grande là fuori - non hai per inviare il modulo se ha istanza tinyMCE. Il contenuto HTML di tinyMCE è abbastanza sicuro (tinyMCE lo filtra) – Yang

Problemi correlati