ckeditor可以更新数据库内容吗?

时间:2012-12-22 18:06:57

标签: php javascript mysql ckeditor

你能给我一种方法将ckeditor的内容保存到数据库吗?

我有0%的想法,如何使事情工作,这将是第一次使用一个。我在谷歌搜索但它总是显示fckeditor(它们是否相同?)。另外,我已经尝试了一些带有AJAX的代码,但仍然无法使其工作,因为它需要一些插件而且我实际上并不理解它。

无论如何,我正在使用4.0版本的ckeditor并且更喜欢php或javascript代码,因为我并不真正了解AJAX。这是我的试用代码:

<!DOCTYPE html>
<!--
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
-->

<?php
include('global.php');
?>

<html>
<head>

    <script>
        var type = 'Admin';

        <!-- editableContent -->
        window.onload = function (){
            if(type=='Admin'){
            document.getElementById('opener').contentEditable= true;
            document.getElementById('main').contentEditable= true;
            // We need to turn off the automatic editor creation first.
            CKEDITOR.disableAutoInline = true;
            var editor = CKEDITOR.inline( 'opener' );
            var editor = CKEDITOR.inline( 'main' );
            }
            else{
            document.getElementById('opener').contentEditable= false;
            document.getElementById('main').contentEditable= false;
            }
        }

        function showHTML () {
        document.getElementById('textpad').textContent = textEditor.document.body.innerHTML;
        return;
        }

    </script>


    <title>Inline Editing by Code &mdash; CKEditor Sample</title>
    <meta charset="utf-8">
    <script src="ckeditor/ckeditor.js"></script>
    <link href="ckeditor/samples/sample.css" rel="stylesheet">
    <style>

        #editable
        {
            padding: 10px;
            float: left;
        }

    </style>
</head>
<body>
    <div id="opener">
    <?
    $result= mysql_query ("SELECT * from text_tb WHERE categoryName='index'");
        while($row = mysql_fetch_array($result)){
        echo $row[1];
        }
    ?>
    </div>

    <div id="main">
    <?
    $result= mysql_query ("SELECT * from text_tb WHERE categoryName='about'");
        while($row = mysql_fetch_array($result)){
        echo $row[1];
        }
    ?>
    </div>
</body>
</html>

非常感谢您的时间和帮助。

3 个答案:

答案 0 :(得分:0)

这可能不是100%的目标,但它是我使用的,它运作良好。 TinyMCE使用HTML textarea 标记和一些JavaScript来允许客户端格式化信息。然后普通的“提交”将textarea的内容发送到服务器,您可以在POST方法请求中接收它,并将其存储在数据库中。

TinyMCE的样本JS:

<script language="javascript" type="text/javascript" src="scripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">

tinyMCE.init({
    mode : "textareas",
    theme : "advanced",
    plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

    theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,|,bullist,numlist,|,copy,paste,pastetext,pasteword,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,removeformat,|,forecolor,backcolor,|,formatselect,charmap,emotions,iespell,",
    theme_advanced_buttons2 : "",
    theme_advanced_buttons3 : "",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true
});

</script>

此处链接:http://www.tinymce.com/

答案 1 :(得分:0)

ckeditor文档提供了一种非常简单易用的方法:

<form method="post">
    <p>
        My Editor:<br>
        <textarea name="editor1">&lt;p&gt;Initial value.&lt;/p&gt;</textarea>
        <script>
            CKEDITOR.replace( 'editor1' );
        </script>
    </p>
    <p>
        <input type="submit">
    </p>

@ http://docs.ckeditor.com/#!/guide/dev_framed-section-4

在服务器端,您只需要

mysql_query("insert into yourtable (yourtextfield) VALUES ( '".mysql_real_escape_string($_POST['editor1'])."')");

虽然我强烈建议您使用PHP PDO Extensions提供的预准备语句。准备好的陈述更加安全。

答案 2 :(得分:0)

  

[...]更喜欢php或javascript代码,因为我真的不知道AJAX。

事实上,AJAX是PHP和JavaScript的混合:P如果没有服务器端语言(PHP),您无法更新数据库内容,但使用客户端语言(JavaScript)可以“与服务器端”通信脚本,这就是我们所说的AJAX ..

无论如何,正如Ray Paseur所说,通常你发布一个包含textarea的表单,其中包含已编辑内容的值,但在你的情况下,你似乎正在使用4.0版本的新内联编辑功能?

因此,在这种情况下,要访问已编辑内容的值,您必须获取您编辑的div的内容,如下所示:

var opener_content=document.getElementById("opener").innerHTML;
var main_content=document.getElementById("main").innerHTML;

这将为您提供编辑器生成的HTML代码。只需在您可能通过页面中的“保存更改”按钮调用的函数中执行此操作,然后使用AJAX将这些变量发送到您的服务器...(我建议您了解有关AJAX的更多信息,它比接缝更简单。)

但是,如果您现在不想学习AJAX,可以在页面上添加一个带有空文本区域的隐藏表单,当点击保存按钮时,用上面的2个变量填充这些textarea,然后你发布这个通过JavaScript形成表单并使用$_POST变量在PHP中保存数据!它会起作用,即使它是一个丑陋而懒惰的解决方案:)