2010-02-18 11 views
0

J'ai créé un formulaire constitué de deux champs de saisie et d'une zone de texte wysiwyg (ckeditor). J'ai une fonction utilisant ajax pour rassembler les données de ckeditor à soumettre. J'ai le formulaire correctement soumis à la base de données, mais j'ai également besoin d'écrire dans un fichier texte. Comment ferais-je cela?Soumettre le texte et le formulaire Wysiwyg à la fois à la base de données et au fichier plat

Modifier pour inclure le code:

utilisant onclick soumettre:

onclick=\"javascript:submitData()\" 

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

}

soumettre à la base de données, puis essayez de présenter en fichier plat:

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

Répondre

1

Je suppose que, quelque part dans votre script PHP, il y a quelque chose comme

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

qui insère à la base de données?

Eh bien, près de cette ligne, vous devez écrire dans votre fichier.


La solution la plus simple que je peux penser est d'utiliser file_put_contents:

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

Si vous voulez juste créer un nouveau fichier, ou remplacer un existant; et:

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

Si vous souhaitez ajouter votre texte à la fin d'un fichier existant (et créer le fichier si elle n'existe pas).


Bien sûr, vous pouvez également utiliser une combinaison de fopen, flock, fwrite et fclose; mais cela signifie un peu plus de travail ^^

0

Le moyen le plus simple serait d'avoir le script invoqué via ajax écrire les données dans le fichier texte ainsi qu'insérer dans la base de données.

0

Voici ce que je ferais. Je vais faire quelques hypothèses ici sur la façon dont vous gérez la partie base de données, mais vous devriez être capable de traduire cela en code de travail très bien.

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

En gros, voici ce que nous faisons:

  1. Prenez les données de $_POST (ou chaque fois que vous obtenez à partir après avoir ballotté dans le DB)
  2. Ouvrir un fichier texte ("my_data.txt") pour l'écriture. S'il n'existe pas, il sera créé.Si vous voulez contrôler où ce fichier est créé, il suffit de passer dans un chemin de fichier absolu
  3. Écrivez les données dans le fichier
  4. Fermez le fichier

Et votre fait. Comme pour la partie AJAX, il vous suffit de transmettre vos données à ce script via la propriété sendstring sous le nom "wysiwyg_data".

J'espère que cette aide.

+0

est assez proche de ce que j'essayais, mais pour une raison quelconque, il n'écrit pas dans le fichier texte. Je vais modifier ma question avec une partie de mon code afin que vous ayez une meilleure idée de ce que j'essaie de faire. –

+0

Avez-vous défini error_reporting (E_ALL)? De cette façon, des avertissements bizarres apparaîtront et vous pourrez repérer quelque chose que vous avez manqué. Essayez de mettre error_reporting (E_ALL); en haut de votre script et voyez ce que vous obtenez. –

1

Je suis tituber comme un homme aveugle dans le monde de PHP,

mais je suis plus venu le problème que vous ayez, j'utilise des fichiers plats pour stocker le contenu dynamique d'un site web, extraits html édité en CKeditor et enregistrés en tant que fichiers texte, ceux-ci sont ensuite inclus dans chaque page du site Web.

Voici ce que j'ai dans la page qui contient le formulaire 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> 

Enregistrer que 1form.php et changer les adresses pour répondre à vos besoins ou simplement créer un dossier appelé « contenu » dans le même dossier que ce script et créer un fichier texte dans ce dossier appelé 1.txt

Ensuite, vous avez besoin d'un fichier à traiter le texte et l'enregistrer comme un fichier texte

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

maintenant, sauvegardez que 1.php

les fichiers texte doivent exister dans le premier i nstance, comme mentionné auparavant.

Vérifiez le chemin où vous stockez vos fichiers et modifier le code en conséquence

Cela n'utilise CKeditor donc qui doit être sur votre serveur ainsi.

vous pouvez appeler la page comme ça,

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

De cette façon, vous pouvez appeler beaucoup de contenu avec 1 formulaire et un fichier de sauvegarde.

J'ai élaboré pour contrôler tout le contenu de cette façon, moins de contrainte sur le temps du serveur et facilite la sauvegarde, ce qui signifie que vous n'avez pas besoin de SQL, pas de SQL mauvais, juste une autre option.