Самая простая форма с комментариями на php
Язык php — язык динамический. Самый простой пример его интерактивного действия — форма с комментариями.
Вот здесь будет примерчик. Возможно начинающим это будет в пользу.
Итак, собственно сама форма куда будем писать комментарии:
<form action="obr.php" method="post">
<textarea name="comment"></textarea><br>
<input type="submit" value="Отправить" />
</form>
Видно что поле всего одно (я же обещал самый простой вариант). У этого поля есть имя — «comment». Оно необходимо для того чтобы потом спросить: Comment, а что в тебя написал пользователь, каково твое содержимое? Без имени не понятно к кому мы будем обращаться.
Форма отправляет комментарий файлу обработки: obr.php. Написанием его я и сейчас займусь.
Для начала проверю — поступили ли данные:
if (isset ($_POST['comment'])){
echo «Урра!! Комментарий получен!»;
}
Далее нам собственно нужно куда-то собирать все комментарии. Делать это мы будет в текстовый файл: allcomments.txt. Так проще.
Открываю текстовый файл на запись в конец:
$fo=fopen («allcomments.txt»,"a");
пишу туда комментарий и перевожу на новую строку для следующего комментария:
fwrite ($fo,$_POST['comment']."\r\n");
закрываю файл:
fclose ($fo);
Вот собственно и вся обработка. При нажатии на кнопку отправки Submit комментарий пересылается в obr.php, записывается в текстовый файл. И для того чтобы пользователь не останавливался на форме обработки а мог сразу просмотреть комментарий — делаю редирект на исходную страничку:
header («Location:http://setandwork.org.ua/comments_primery/ind.php»);
Здесь внимание — отправляется заголовок, а это значит что сервер раньше не должен получать ничего — то есть не должно выводить даже пробела. Путь указываем абсолютный.
Весь файл obr.php выглядит так:
<?php
if (isset ($_POST['comment'])){
$fo=fopen («allcomments.txt»,"a");
fwrite ($fo,$_POST['comment']);
fclose ($fo);
}
header («Location:http://setandwork.org.ua/comments_primery/ind.php»);
?>
Осталось только вывести комментарии в исходном файле.
А сделаем это так:
считаем все комментарии из файла allcomments.txt в массив:
$allcomments=file («allcomments.txt»);
и выведем его:
foreach ($allcomments as $v){
echo $v."<br><hr>";
}
Вот и все.
Подытожу. У нас получилось 3 файла:
1) с формой и комментариями — то что видит пользователь:
<form method="post" action="obr.php">
<textarea name="comment"></textarea><br>
<input type="submit" value="Отправить">
</form>
<?php
$allcomments=file («allcomments.txt»);
foreach ($allcomments as $v){
echo $v."<br><hr>";
}
?>
2) файл обработки (obr.txt):
<?php
if (isset ($_POST['comment'])){
$fo=fopen («allcomments.txt»,"a");
fwrite ($fo,$_POST['comment']."\r\n");
fclose ($fo);
}
header («Location:http://setandwork.org.ua/comments_primery/ind.php»); ?>
3) текстовый файл с комментариями (allcomments.txt).
Все это в рабочем виде можно увидеть здесь
Predator - идеальная защита для компьютера
Правильное использование знака апострофа
Как минимизировать любую программу в трей
Автоматическая авторизация в twitter
Делаю страницу «форма.php» с кодом:
form method="post" action="obr.php">
и страницу «obr.php» с кодом:
При отправке текста из формы происходит переход на «obr.php», но ничего не выводится. Почему?
А и не должно ничего выводится. Мы просто записываем данные, полученные из формы в файл и сразу делаем редирект на предыдущую страничку
А на ней уже и выводим все что нужно.
Если хотите знать что получает obr.php из формы — то напишите в этом файле print_r ($_POST);
спасибо, что ответили.
после ввода текста открывается obr.php и ничего не происходит, текст в allcomments.txt не записывается.
проверьте пожалуйста, все ли правильно:
и
Наверное потому что вы запускаете код не на сервере а в браузере.
php выполняется на сервере. Установите «Денвер» себе на комп. Или воспользуйтесь каким либо хостингом.