0

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

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

无论如何,我正在使用 ckeditor 的 4.0 版本,并且更喜欢 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>

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

4

3 回答 3

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/

于 2012-12-22T18:17:09.883 回答
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 提供的准备好的语句。准备好的语句更加安全。

于 2012-12-22T18:57:08.230 回答
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 个变量填充这些文本区域,然后通过 JavaScript 发布此表单并使用$_POST变量将数据保存在 PHP 中!它会起作用,即使它是一个丑陋和懒惰的解决方案:)

于 2012-12-22T19:10:10.083 回答