簡體   English   中英

提交文本和所見即所得的形式到數據庫和平面文件

[英]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);

如果要在現有文件的末尾添加文本(如果不存在則創建文件)


當然,您也可以結合使用fopenflockfwritefclose 但這意味着更多的工作^^

在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);
?>

基本上,這是我們正在做的事情:

  1. $_POST獲取數據(或從數據庫中獲取數據后的任何位置)
  2. 打開一個文本文件(“ my_data.txt”)進行寫入。 如果不存在,將創建它。 如果要控制此文件的創建位置,只需傳入一個絕對文件路徑
  3. 將數據寫入文件
  4. 關閉檔案

和你完成。

至於AJAX部分,您只需通過名為“ wysiwyg_data”的sendstring屬性將數據傳遞到此腳本。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM