Php 如何将更新的CKEditor内容保存到数据库?

Php 如何将更新的CKEditor内容保存到数据库?,php,sql,ckeditor,Php,Sql,Ckeditor,我在谷歌和这个网站上到处搜索,想找到这个问题的答案,但运气不好 我正在为希望自己进行维护的未来客户开发定制CMS。下面是将当前页面内容从数据库加载到textarea的代码: if(isset($_GET['id'])) { $id = $_GET['id']; $content = mysql_query("SELECT title, content FROM pages WHERE id=".$id); $search = mysql_num_rows($content

我在谷歌和这个网站上到处搜索,想找到这个问题的答案,但运气不好

我正在为希望自己进行维护的未来客户开发定制CMS。下面是将当前页面内容从数据库加载到textarea的代码:

if(isset($_GET['id'])) {
    $id = $_GET['id'];
    $content = mysql_query("SELECT title, content FROM pages WHERE id=".$id);
    $search = mysql_num_rows($content);
    if($search > 0){
        while($page = mysql_fetch_array($content)) { ?>
        <h1>Editing <?php echo $page['title']; ?></h1>
    <form id="editform" action="save.php?id=<?php echo $_GET['id']; ?>" method="post">
    <textarea id="editor" name="content"><?php echo $page['content']; ?></textarea>
    </form>
<?php } 
    }
} ?>
问题是POST['content']一直在获取原始内容,而不是用户刚刚提交的编辑内容


如何解决此问题?

表单发布时,数据应自动传递。以下是《开发人员指南》中的“集成”页面,解释了这一点:

您确定查询正在成功运行并且内容字段正在更新吗?我这样问是因为您发布的代码说,在save.php中,您正在使用:

$id = $_GET['id'];
这似乎会引起问题,因为您在表单中使用的是method=“post”,而不是method=“get”

您是否也可以发布代码,您正在使用CKEditor替换textarea。您是否正在使用PHP方法:

<?php
$CKEditor = new CKEditor();
$CKEditor->basePath = '/ckeditor/';
$CKEditor->replace("content");
?>

要在特定代码中使用PHP方法,请执行以下操作:

if(isset($_GET['id'])) {
    $id = $_GET['id'];
    $content = mysql_query("SELECT title, content FROM pages WHERE id=".$id);
    $search = mysql_num_rows($content);
    if($search > 0){
        while($page = mysql_fetch_array($content)) { ?>
        <h1>Editing <?php echo $page['title']; ?></h1>
    <form id="editform" action="save.php?id=<?php echo $_GET['id']; ?>" method="post">
    <textarea id="content" name="content"><?php echo $page['content']; ?></textarea>
    </form>
<?php }

include_once "ckeditor/ckeditor.php";
$CKEditor = new CKEditor();
$CKEditor->basePath = '/ckeditor/';
$CKEditor->replace("content");

    }
} ?>
if(isset($\u GET['id'])){
$id=$_GET['id'];
$content=mysql_query(“选择标题,从id=“.id=”的页面中选择内容);
$search=mysql\u num\u行($content);
如果($search>0){
而($page=mysql\u fetch\u数组($content)){?>
编辑
我将textareaid从“editor”更改为“content”。我建议不要使用“editor”作为id或名称,因为它在CKEditor代码中用于引用CKEditor实例

您可以在加载编辑器的页面、config.js文件或您自己的自定义配置文件中进行配置设置

我花了一些时间试图在表单提交后捕获表单内容字段的值,但只能在CKEditor更新内容之前看到它

祝你身体健康,

Joe

我对php中的CKEditor行为一无所知,但在javascript中,您必须调用编辑器方法来更新底层元素或编辑器实例中的getData(),以获得用户更改,而不是在JS中自动执行anyway@Zeela:我会使用jQuery的
submit();
来触发更新代码吗?(实际上我知道
updateElement()
,但现在我找到了在我的情况下使用它的方法。)好的,请原谅我问了一个愚蠢的问题,但是我该如何发布正在编辑的页面的id?我需要它在save.php页面上找到正确的数据以更新新内容。另外,您能解释一下如何使用与我的代码相关的php$CKEditor吗?谢谢您的帮助。:)您好,Purmou,我不确定您是否收到关于答案更改的通知,因此我添加此注释是为了让您知道我已回答了您的问题。如果使用PHP方法无法解决问题,请发布您用于CKEditor的任何代码,我将考虑是否可以尝试其他方法。Joe
<script language="Javascript">
<!--
  CKEDITOR.replace( 'content' );
//-->
</script>
<form id="editform" action="save.php?id=<?php echo $_GET['id']; ?>" method="post">
<input type="hidden" id="id" name="id" value="<?php echo $_GET['id']; ?>" />
<textarea id="editor" name="content"><?php echo $page['content']; ?></textarea>
<?php
// Include the CKEditor class.
include_once "ckeditor/ckeditor.php";

// Create a class instance.
$CKEditor = new CKEditor();

// Path to the CKEditor directory.
$CKEditor->basePath = '/ckeditor/';

// Replace a textarea element with an id (or name) of "textarea_id".
$CKEditor->replace("textarea_id");
?>
$CKEditor->config['width'] = 600;
if(isset($_GET['id'])) {
    $id = $_GET['id'];
    $content = mysql_query("SELECT title, content FROM pages WHERE id=".$id);
    $search = mysql_num_rows($content);
    if($search > 0){
        while($page = mysql_fetch_array($content)) { ?>
        <h1>Editing <?php echo $page['title']; ?></h1>
    <form id="editform" action="save.php?id=<?php echo $_GET['id']; ?>" method="post">
    <textarea id="content" name="content"><?php echo $page['content']; ?></textarea>
    </form>
<?php }

include_once "ckeditor/ckeditor.php";
$CKEditor = new CKEditor();
$CKEditor->basePath = '/ckeditor/';
$CKEditor->replace("content");

    }
} ?>