你能给我一种方法将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 — 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>
非常感谢您的时间和帮助。
答案 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>
答案 1 :(得分:0)
ckeditor文档提供了一种非常简单易用的方法:
<form method="post">
<p>
My Editor:<br>
<textarea name="editor1"><p>Initial value.</p></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中保存数据!它会起作用,即使它是一个丑陋而懒惰的解决方案:)