将文本和Wysiwyg表单提交到数据库和平面文件

时间:2010-02-18 18:31:24

标签: php javascript ajax forms wysiwyg

我创建了一个由2个输入字段和一个所见即所得文本区域(ckeditor)组成的表单。我有一个使用ajax来收集要提交的ckeditor数据的函数。我有正确提交到数据库的表单,但我还需要它写入文本文件。我该怎么做呢?

编辑以包含代码:

使用onclick提交:

onclick=\"javascript:submitData()\"

ajax功能:

function submitData(){
var params='';  
if(document.getElementById('title').value!='' && document.getElementById('date').value!='' && CKEDITOR.instances.article.getData()!=''){
    //build params
    params='&title='+document.getElementById('title').value;
    params+='&date='+document.getElementById('date').value;
    params+='&article='+escape(CKEDITOR.instances.article.getData());
    var httpRequest=new ajaxObject('form.php',processData);
    httpRequest.update('id=submitData'+params);

}

提交到数据库,然后尝试提交到平面文件:

$saving = $_REQUEST['saving'];
          if ($saving == 1) { 
            $data = $formData['title'];
            $data .= $formData['date'];
            $data .= $formData['article'];

            $file = "/txt/data.txt"; 

            $fp = fopen($file, "a") or die("Couldn't open $file for writing!"); 
            fwrite($fp, $data) or die("Couldn't write values to file!"); 
            fclose($fp); 
            }

4 个答案:

答案 0 :(得分:1)

我认为,在PHP脚本的某个地方,有类似

的内容
mysql_query("insert into your_table ... ");

插入数据库?

好吧,接近那一行,你必须写信给你的文件。


我能想到的最简单的解决方案是使用file_put_contents

file_put_contents('path to your file', $content);

如果您只想创建新文件,或覆盖现有文件;并且:

file_put_contents('path to your file', $content, FILE_APPEND);

如果要在现有文件的末尾添加文本(如果文件不存在则创建文件)


当然,您也可以使用fopenflockfwritefclose的组合;但这意味着更多的工作^^

答案 1 :(得分:1)

我像PHP世界中的盲人一样蹒跚而行,

但是我已经解决了你的问题,我使用平面文件来存储网站的动态内容,在CKeditor中编辑的html片段并保存为文本文件,然后将这些文件包含在网站的每个页面中。

以下是我在页面中包含CKeditor表单的内容。

    <? $contentv = $_GET["contentv"];?><head>
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script>
<form action="1.php?contentv=<? echo $contentv?>" method="post">
<textarea rows="25" cols="70" name="content">
<?
$cext = ".txt";
$files ="../content/";
$fn = $files.$contentv.$cext;
print htmlspecialchars(implode("",file($fn)));
?> 
</textarea>
<br>

</form>
<p>
  <script type="text/javascript">
    CKEDITOR.replace( 'content' );
</script>

  <script type="text/javascript">
    window.onload = function()
    {
        CKEDITOR.replace( 'content' );
    };
</script>
  <?php
$editor_data = $_POST[ 'content' ];
?>
  <script type="text/javascript">
    var editor_data = CKEDITOR.instances.conent.getData();
</script>

将其保存为1form.php并更改地址以满足您的需要,或者只是在与此脚本相同的文件夹中创建一个名为“content”的文件夹,并在该文件夹中创建一个名为1.txt的文本文件

接下来,您需要一个文件来处理文本并将其另存为文本文件

<? $contentv = $_GET["contentv"];?>
<?
$cext = ".txt";
$fn = "./content/".$contentv.$cext;
$content = stripslashes($_POST['content']);
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
fputs($fp,$content);
fclose($fp) or die ("Error closing file!");
echo "<meta http-equiv=\"refresh\" content=\"0; url=./1form.php?contentv=$contentv\" />\n";
?>

现在保存为1.php

文本文件需要存在于第一个实例中,如前所述。

检查存储文件的位置的路径并相应地编辑代码

这确实使用CKeditor,因此也需要在您的服务器上。

然后你可以这样调用这个页面,

http://yourserver.co.uk/1form.php?contentv=1

通过这种方式,您可以使用1个表单和一个保存文件调用大量内容。

我已经详细说明了以这种方式控制所有内容,减少服务器时间的压力并使备份更容易,意味着您不需要SQL,而不是SQL不好,只是另一种选择。

答案 2 :(得分:0)

最简单的方法是通过ajax调用脚本将数据写入文本文件以及插入数据库。

答案 3 :(得分:0)

这就是我要做的。我将在这里做一些关于你如何处理数据库部分的假设,但是你应该能够将它转化为正常工作的代码。

<?php
$wysiwyg_data = $_POST["wysiwyg_data"];
// After you've sent stuff to the DB
$fh = fopen("my_data.txt", "wb");
fwrite($fh, $wysiwyg_date);
fclose($file_handler);
?>

基本上,这就是我们正在做的事情:

  1. $_POST抓取数据(或者在将数据放入数据库后从中获取数据)
  2. 打开文本文件(“my_data.txt”)进行写入。如果它不存在,将创建它。如果要控制创建此文件的位置,只需传入绝对文件路径
  3. 将数据写入文件
  4. 关闭文件
  5. 你完成了。

    对于AJAX部分,您只需通过名为“wysiwyg_data”的sendstring属性将数据传递给此脚本。

    我希望这会有所帮助。