[英]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.