Veritabanı ve düz dosya hem metin ve Wysiwyg formu göndermek

4 Cevap php

Ben 2 giriş alanları ve bir wysiwyg metin alanına (ckeditor) oluşan bir form oluşturduk. Ben sunulacak ckeditor veri toplamak için ajax kullanarak bir işlevi var. Ben formu düzgün veritabanına göndererek var, ama ben de bir metin dosyasına yazmak gerekir. Bunu nasıl yapıyor hakkında gitmek istiyorsunuz?

Edit to include code:

göndermek için onclick kullanıyor:

onclick=\"javascript:submitData()\"

ajax fonksiyonu:

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

}

veritabanına göndermek, daha sonra düz dosya göndermek için deneyin:

$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 Cevap

Ben yere PHP komut gibi bir şey var, varsayalım

mysql_query("insert into your_table ... ");

Bu veritabanına ekler?

Eh, bu çizgiye yakın, sizin dosyaya yazmak zorunda.


The simplest solution I can think about is to use file_put_contents :

file_put_contents('path to your file', $content);

, Sadece yeni bir dosya oluşturmak veya varolan bir geçersiz kılmak istiyorsanız ve:

file_put_contents('path to your file', $content, FILE_APPEND);

Varolan bir dosyanın sonunda metin eklemek istiyorsanız (and create the file if it doesn't exist).


Of course, you can also use a combinaison of fopen, flock, fwrite, and fclose ; but it means a bit more work ^^

Ben, PHP dünyasında kör bir adam gibi şaşırtıcı etrafında am

ama üzerinde sahip bir web sitesinin dinamik içeriği depolamak için düz dosyalar kullanıyorum, ckeditor düzenlenebilir ve metin dosyaları olarak kaydedilir html parçacıkları, bunlar daha sonra web sitesinin her sayfasında yer almaktadır sorunu geldi.

İşte ckeditor formu içeren Page ne var.

    <? $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 olarak kaydetmek ve ihtiyaçlarınıza uygun adreslerini değiştirmek veya sadece bu komut ile aynı klasörde "content" adında bir klasör oluşturun ve 1.txt denilen bu klasöre bir metin dosyası oluşturun

Sonra metni işlemek ve bir metin dosyası olarak kaydetmek için bir dosya gerekir

<? $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";
?>

Şimdi 1.PHP olarak bu tasarruf

Metin dosyaları daha önce zikredildiği gibi, ilk etapta bulunması gerekir.

Buna göre dosya ve düzenleme kodu saklamak için yolunu kontrol edin

Bu, aynı zamanda sizin sunucuda olması gerekir bu yüzden ckeditor kullanıyor.

Sonra böyle sayfayı çağırabilirsiniz,

http://yourserver.co.uk/1form.php?contentv=1

Eğer 1 formu ve bir tasarruf dosya ile içerik çok çağırabilirsiniz bu şekilde.

Ben bu şekilde tüm içerik, sunucu saatine az yük kontrolü özenli ve kolay yedekleme yapar, sen, SQL gerek yok demektir, bu SQL kötü, sadece başka bir seçenek.

En kolay yolu ajax çağrılan komut db içine sokarak yanı sıra metin dosyasına veri yazmak sahip olacaktır.

İşte ben öyle yapardım. Ben veritabanı bölümünü ele konum hakkında burada birkaç varsayımlar yapmak için gidiyorum, ama sen sadece iyi çalışıyor koduna bu çevirmek gerekir.

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

Temel olarak, burada biz ne yapıyoruz:

  1. $_POST (ya da her yerde sen DB attı ettik sonra onu alıyoruz) gelen verileri tut
  2. Yazılı bir metin dosyasını ("my_data.txt") açın. O yoksa, yaratılacaktır. Bu dosya oluşturulduktan alır nerede kontrol etmek istiyorsanız, sadece bir mutlak dosya yolu geçmek
  3. Dosyaya veri yazmak
  4. Dosyayı kapatın

Ve bitti.

AJAX bölümü için olduğu gibi, sadece adı "wysiwyg_data" ile sendstring özelliği ile bu komut için veri geçerdi.

Bu yardımcı olur umarım.