[英]Submit text and Wysiwyg form to both Database and flat file
我创建了一个由2个输入字段和一个wysiwyg文本区域(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);
}
我想在您的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);
如果要在现有文件的末尾添加文本(如果不存在则创建文件) 。
在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
这样,您可以使用一种形式和一个保存文件来调用许多内容。
我已经详细说明了以这种方式控制所有内容的方法,减轻了服务器时间的负担,并使备份更加轻松,这意味着您不需要SQL,不是说SQL不好,而是另一种选择。
最简单的方法是使通过ajax调用的脚本将数据写入文本文件以及插入到db中。
这就是我要做的。 在这里,我将对如何处理数据库部分做出一些假设,但是您应该可以将其转换为工作代码。
<?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
属性将数据传递到此脚本。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.