Недавно начал изучать PHP. Возникла проблема при создании формы ввода текста. Задача простая: Страница сайта Заголовок Потом идёт два окна 1) Имя пользователя 2) Текст который он напишет Две кнопки: Сохранить и Очистить Пользователь заходит на страницу, вводит текст, нажимает сохранить и текст отображается НЕ на новой странице, а на той же самой только ниже. Как это реализовать? У меня получилось только сделать, чтобы текст сохранялся в отдельном текстовом файле на сервере. А вот, чтобы он просто отображался ниже формы не получается.
Вариант №1: Пользователь заходит на страницу, где эта форма. На странице ниже формы скрипт извлекает текст из файла (правильней конечно будет использовть базу данных). Пользователь вводит информацию, форма идет на исполняемый скрипт (например add.php) который добавляет текст в файл (бд) и возвращает пользователя обратно. (Можно использовать редирект через header(), JS, meta). Возвратившись обратно страница опять загрузит форму и соответственно текст из файла (бд) Вариант №2: Использовать AJAX Пользователь заполняет форму нажимает, отправить, в это время JS отправляет форму на исполняем скрипт, тот сохраняет в файл (бд) и возвращает введенный текст (ну или что там нужно) и добавляет в страницу ниже формы.
PHP: <h2>Заголовок сайта</h2> <form action = '<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>' method = 'post'> <font color = 'blue' size = '4px'>Имя пользователя</font><br><input type = 'text' name = 'username'><br> <font color = 'blue' size = '4px'>Текст</font><br><textarea cols = '50' rows = '30' name = 'text'></textarea><br> <input type = 'submit' value = 'Сохранить'> <input type = 'reset' value = 'Очистить'><br> </form> <?php if(isset($_POST['username']) && isset($_POST['text'])) { $username = htmlspecialchars($_POST['username']); $text = htmlspecialchars($_POST['text']); echo '<pre>'.$text.'</pre>'; } ?>
Redwood Спасибо работает) Вот только надо, чтобы текст ещё в файл на сервере сохронялся и после ввода на сайте оставался
<?php $message=$_POST['messagebody']; $filename = 'message'; $handle = fopen($filename, 'a+'); fwrite($handle, $message); fwrite($handle, "<br>-------------<br>"); fseek($handle, 0); while (!feof ($handle)) { $content = fgets($handle, 4096); print $content; } fclose($handle); ?> <? include("anekd1.php"); include("message.txt"); ?> Работает. Только при обновлении страницы копирует текст много раз. Как это исправить? И как поместить выводимый текст вниз формы?
сделать редирект: echo '<div style="color:green">uploaded successfully</div><script type=text/javascript>document.location.href="basename(__FILE__)"</script>'; просто echo $message; после формы
ТС, да ну ты что?! тебе же дали код - изменить/добавить пару строк осталось... вообще думать впадлу что ли? после формы проверяешь, нажата ли кнопка сабмит, если да - пишешь в файл, сразу же читаешь и выводишь... вот тебе хороший линк: http://phpclub.ru/