我创建了一个由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);
}
答案 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);
如果要在现有文件的末尾添加文本(如果文件不存在则创建文件)。
答案 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); ?>
基本上,这就是我们正在做的事情:
$_POST
抓取数据(或者在将数据放入数据库后从中获取数据)你完成了。
对于AJAX部分,您只需通过名为“wysiwyg_data”的sendstring
属性将数据传递给此脚本。
我希望这会有所帮助。