Mysql
 sql >> Database >  >> RDS >> Mysql

Salva i dati in PHP / Mysql con la modifica in linea in CKEditor

Hai bisogno di un po' di magia AJAX. Tramite JavaScript all'interno della pagina ottieni l'HTML modificato. Quindi lo invii al server dove lo ottiene uno script PHP e puoi passarlo a MySQL.

Ecco un semplice banco di prova che ti mostrerà le corde.

Iniziamo con l'HTML modificabile.

<div id='textToBeSaved' contenteditable='true'>
    <p>Using the <strong>Terminal</strong> in OS X makes you all-powerful.</p>
</div>

Abbiamo anche bisogno di un pulsante "Salva" che verrà utilizzato per avviare l'evento POST.

<button onclick='ClickToSave()'>Save</button>

Un tale pulsante potrebbe benissimo essere posizionato nella stessa barra degli strumenti di CKEditor, ma ciò richiederebbe più codifica e lo lascerò a qualcuno che è più bravo di me in JavaScript.

Ovviamente vuoi includere CKEditor. Per il mio codice di esempio utilizzerò anche jQuery, che userò per AJAXing dei risultati.

<script src='https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>
<script type='text/javascript' src='CKEditor4/ckeditor.js'></script>

Ora lo script che verrà eseguito quando si preme il pulsante "Salva". Utilizzerà CKeditor per acquisire l'HTML modificato, quindi jQuery per inviarlo.

<script type='text/javascript' language='javascript'>
// <![CDATA[
function ClickToSave () {
    var data = CKEDITOR.instances.textToBeSaved.getData();
    $.post('save.php', {
        content : data
        })
    }
// ]]>

Questo è tutto, non hai bisogno di nient'altro lato client.

Sul server, è necessario disporre del codice PHP che agirà quando lo script esegue il POST dell'HTML aggiornato. Lo script deve essere chiamato save.php ed essere posizionato nella stessa directory in cui si trova l'HTML se usi il mio codice testualmente. Il mio one-liner qui salverà semplicemente il tuo HTML in un file temporaneo all'interno della cartella /tmp. Sentiti libero di aggiungere invece la tua magia MySQL.

<?php
file_put_contents('/tmp/serverside.html', $_POST['content']);
?>