Как я изменяю этот текст с серверной страницы?

#php #html

#php #HTML

Вопрос:

Я пытаюсь сделать текстовое поле прокрутки на странице «front-end page» считываемым из текстового файла «msg.txt «

 <div class="scroll-slow">
  <?php echo file_get_contents('../msg.txt'); ?>
</div>
  

Я добавил этот код для добавления текстового поля и кнопки сохранения в моем бэкэнде:

 <html> 
  <head> 
      <title></title> 
  </head> 
  <body> 
   <form action="msg.txt" method="POST"> 
     <input name="field1" type="text" /> 
      <input type="submit" name="submit" value="Save"> 
    </form> 
   </body> 
  </html>

<?php 
 if(isset($_POST['field1'])) {
     $data = $_POST['field1'] . "n"; 
     $ret = file_put_contents('../msg.txt', $data, FILE_APPEND | LOCK_EX); 
     if($ret === false) { 
        die('There was an error writing this file'); 
     } else { 
        echo "$ret bytes written to file"; 
     } 
   } else { 
    die('no post data to process'); 
   }?>
  

Также я включил текстовый файл под названием «msg.txt » в моем корне, чтобы кнопка сохранения сохраняла текст в файл, прокручиваемое поле msg будет считывать файл

Моя проблема в том:

  • Текстовое поле прокрутки не считывается из файла
  • Кнопка сохранить не сохраняет в файл, а просто открывает файл!

Что я делаю не так?Извините, я знаю, что это беспорядок, но я пытаюсь учиться.

Ответ №1:

Вы должны сделать action тег пустым, чтобы выполнить PHP код, который находится внутри оператора if

Изменить

 action="msg.txt"
  

Для

 action=""
  

Если вы занимаетесь кодированием на PH , вы должны использовать php file в action теге, вы не можете выполнять какие-либо действия с txt файлом.

Чтобы добавлять текст каждый раз к существующему файлу, используйте

 $txt = "This is text";
$myfile = file_put_contents('text_file.txt', $txt.PHP_EOL , FILE_APPEND | LOCK_EX);
  

Комментарии:

1. Хорошо, мне понравилось то, что вы сказали, теперь он сохраняется в файл, но текст добавляется в файл, который не обновляется. поэтому каждый раз, когда я сохраняю текст, он будет добавлен рядом со старым

2. @Somebody вы хотите добавлять значение поля каждый раз при отправке формы?

Ответ №2:

Здесь вы можете использовать jquery и ajax для получения активного значения текста

 $.ajax({
    url: "backendFile.php",
    type: "post",
    data: {
        text: $("input[name='field1']").val()
    },
    success: (e) => {
        $(".scroll-slow").html(e)
    }
}
  

Ваш backendFile.php

 <?php
    if(isset($_POST['field1'])) {
        $data = $_POST['field1'] . "n";
        $ret = file_put_contents('../msg.txt', $data, FILE_APPEND | LOCK_EX);
        if($ret === false) {
            die('There was an error writing this file');
        } else {
            echo "$ret bytes written to filen".file_get_contents("../msg.txt");
        }
    } else {
        die('no post data to process');
    }
?>
  

Ответ №3:

Вы отправляете данные формы в текстовый файл, текстовые файлы не смогут обрабатывать данные формы.

Вам нужно отправить данные в файл php, в вашем случае сработает простое удаление тега action из form.