0 votes

Soumettre un texte et un formulaire Wysiwyg à la fois à une base de données et à un fichier plat

J'ai créé un formulaire composé de 2 champs de saisie et d'une zone de texte wysiwyg (ckeditor). J'ai une fonction qui utilise ajax pour collecter les données du ckeditor à soumettre. Le formulaire se soumet correctement à la base de données, mais j'ai aussi besoin qu'il écrive dans un fichier texte. Comment dois-je m'y prendre ?

Modifier pour inclure le code :

en utilisant la fonction "onclick" pour la soumission :

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 essayer de soumettre au 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); 
            }

1voto

Pascal MARTIN Points 195780

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

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

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

Eh bien, à proximité de cette ligne, vous devez écrire dans votre fichier.

La solution la plus simple à laquelle je pense est d'utiliser file_put_contents :

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

Si vous souhaitez simplement créer un nouveau fichier ou remplacer un fichier 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 s'il n'existe pas) .

Bien entendu, vous pouvez également utiliser une combinaison de fopen , flock , fwrite y fclose ; mais cela signifie un peu plus de travail ^^

1voto

Dan Suter Points 11

Je titube comme un aveugle dans le monde de PHP,

J'utilise des fichiers plats pour stocker le contenu dynamique d'un site web, des extraits html édités dans CKeditor et sauvegardés sous forme de fichiers texte, qui 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>

Enregistrez ce fichier sous le nom de 1form.php et modifiez les adresses en fonction de vos besoins ou créez simplement un dossier appelé "content" dans le même dossier que ce script et créez un fichier texte dans ce dossier appelé 1.txt.

Ensuite, vous avez besoin d'un fichier pour traiter le texte et l'enregistrer en tant que 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";
?>

Enregistrez maintenant ce fichier sous le nom 1.php

Les fichiers texte doivent d'abord exister, comme nous l'avons déjà mentionné.

Vérifiez le chemin d'accès à l'endroit où vous stockez vos fichiers et modifiez le code en conséquence.

Cette opération utilise CKeditor, qui doit donc également être installé sur votre serveur.

Vous pouvez ensuite appeler la page comme suit,

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

De cette façon, vous pouvez appeler de nombreux contenus avec un seul formulaire et un seul fichier d'enregistrement.

J'ai élaboré pour contrôler tout le contenu de cette manière, moins de contraintes de temps pour le serveur et une sauvegarde plus facile, ce qui signifie que vous n'avez pas besoin de SQL, non pas que SQL soit mauvais, mais juste une autre option.

0voto

Peter Loron Points 802

Le plus simple serait de faire en sorte que le script invoqué via ajax écrive les données dans le fichier texte et les insère dans la base de données.

0voto

Levi Hackwith Points 3898

Voici ce que je ferais. Je vais faire quelques suppositions sur la façon dont vous gérez la partie base de données, mais vous devriez être en mesure de traduire cela en un code fonctionnel.

<?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. Récupérer les données à partir de $_POST (ou l'endroit d'où vous l'obtenez après l'avoir jeté dans la base de données)
  2. Ouvrez un fichier texte ("my_data.txt") pour l'écrire. S'il n'existe pas, il sera créé. Si vous souhaitez contrôler l'endroit où ce fichier est créé, il vous suffit de fournir un chemin d'accès absolu.
  3. Écriture des données dans le fichier
  4. Fermer le fichier

Et vous avez terminé.

Pour ce qui est de la partie AJAX, il vous suffit de transmettre vos données à ce script par l'intermédiaire de la fonction sendstring avec le nom "wysiwyg_data".

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X