Отправить текст и форму Wysiwyg в базу данных и плоский файл - PullRequest
0 голосов
/ 18 февраля 2010

Я создал форму, состоящую из 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); 
            }

Ответы [ 4 ]

1 голос
/ 05 августа 2010

Я шатаюсь, как слепой, в мире PHP,

, но я преодолел проблему, которая у вас возникла, я использую плоские файлы для хранения динамического содержимого сайта, фрагменты HTML, отредактированные вCKeditor и сохраняются в виде текстовых файлов, затем они включаются в каждую страницу веб-сайта.

Вот то, что у меня есть на странице, которая содержит форму 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 был плохим, просто еще один вариант.

1 голос
/ 18 февраля 2010

Полагаю, что где-то в вашем 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);

Если вы хотите добавить свой текст в конец существующего файла (и создать файл, если он не существует) .


Конечно, вы также можете использовать комбинацию fopen, flock, fwrite и fclose;но это значит, немного больше работы ^^

0 голосов
/ 18 февраля 2010

Вот что я бы сделал. Я собираюсь сделать несколько предположений о том, как вы обрабатываете часть базы данных, но вы должны быть в состоянии перевести это в рабочий код просто отлично.

<?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, вы просто передадите свои данные в этот скрипт через свойство sendstring с именем "wysiwyg_data".

Надеюсь, это поможет.

0 голосов
/ 18 февраля 2010

Самый простой способ - запустить скрипт через ajax, записать данные в текстовый файл и вставить в базу данных.

...