Комментарии для сайта
Готовый код скрипта комментариев с пошаговой инструкцией, где его разместить, как осуществить связь с MySQL, и что и куда залить и подключить, чтоб всё заработало.
Я покажу вам готовый код скрипта и расскажу пошагово где его разместить, как осуществить связь с MySQL, и что и куда залить и подключить, чтоб всё заработало.
Сразу уточню, что весь представленный здесь код преобразуется в файлы в Notepad++ с соответствующим расширением и в кодировке utf8
< script type color: #008080;">text/javascript «>
$( function () $( «#send» ). click ( function () var author = $( «#author» ).val();
var message = $( «#message» ).val();
var stranica = $( «#stranica» ).val();
$.ajax( type: «POST» ,
url: «sendMessage.php» ,
data: < "author" : author, "message" : message, "stranica" : stranica>,
cache: false,
success: function (response) var messageResp = new Array();
var resultStat = messageResp[Number(response)];
if(response == 0) $( «#author» ).val( «» );
$( «#message» ).val( «» );
$( «#commentBlock» ).append( «
» +message+ «
» );
>$( «#resp» ).text(resultStat).show().delay(1500).fadeOut(800);>>);return false;>);>);
< /script >
Разместить этот скрипт на странице можно двумя способами.
1. Скрипт размещается непосредственно на странице между тегами
2. В корневой директории сайта создаётся папка c названием, например js, если таковой ещё нет, и в неё помещается файл скрипта под названием, допустим script_comments.js
Тогда на странице, в тег прописывается подключение этого файла к странице.
Какой из этих вариантов лучше, я сказать затрудняюсь, но второй мне представляется более удобным.
Следующим шагом размещаем на странице код вывода комментариев и код формы комментариев.
Вставляется это всё одним блоком в том месте страницы, где вы хотите отобразить комментарии, обычно сразу после статьи.
< div id color: #008080;">commentBlock «>
$result = mysql_query ( «SELECT * FROM messages WHERE stranica=’ $_SERVER [PHP_SELF]'» ,$db);
$comment = mysql_fetch_array ($result);
do< echo "
» .$comment[ ‘date’ ]. «
» .$comment[ ‘message’ ]. «
» ;
>while($comment = mysql_fetch_array ($result));
?>
< /div >
< form action color: #008080;">sendMessage.php » method color: #008080;»>post » name color: #008080;»>form «>
< p >Автор: < br >< input name color: #008080;">author » type color: #008080;»>text » id color: #008080;»>author «>
< p >>Напишите ваш отзыв:< br >< textarea name color: #008080;">message » style color: #008080;»>width:80%; min-height:200px; » id color: #008080;»>message «>< /textarea >< /p >>
< input name color: #008080;">stranica » type color: #008080;»>hidden » value =»»» id color: #008080;»>stranica «>
< input name color: #008080;">js » type color: #008080;»>hidden » value color: #008080;»>no » id color: #008080;»>js «>
< input name color: #008080;">button » type color: #008080;»>submit » value color: #008080;»>Отправить » id color: #008080;»>send «> resp «>
< /form> ;
Так, с клиентской частью закончили, теперь пойдём на сервер.
Первым делом нужно скачать маленькую библиотеку jquery-1.5.1.min.js. (82kb)
Обычно представлена она открытым кодом, значит нажимаем правой клавишей и Сохранить как… сохраняем файл себе на компьютер.
Затем этот файл загружаем на сервер в папку js, которую мы создали на предыдущем шаге, и подключаем этот файл к странице, на которой будут выводится комментарии в тег .
У нас там уже есть один подключенный скрипт, рядом с ним прописываем ещё один.
Затем в директорию в которой находится файл страницы с комментариями, нужно загрузить файл с командами для БД.
header ( «Content-type: text/html; charset=UTF-8» );
if ( empty ($_POST[ ‘js’ ])) if ($_POST[ ‘message’ ] != » && $_POST[ ‘author’ ] != ») $author = @ iconv ( «UTF-8» , «UTF-8» , $_POST[ ‘author’ ]);
$author = addslashes ($author);
$author = htmlspecialchars ($author);
$author = stripslashes ($author);
$author = mysql_real_escape_string ($author);?php>
$message = @ iconv («UTF-8», «UTF-8», $_POST[ ‘message’ ]);
$message = addslashes ($message);
$message = htmlspecialchars ($message);
$message = stripslashes ($message);
$message = mysql_real_escape_string ($message);
$stranica = @ iconv («UTF-8», «UTF-8», $_POST[ ‘stranica’ ]);
$stranica = addslashes ($stranica);
$stranica = htmlspecialchars ($stranica);
$stranica = stripslashes ($stranica);
$stranica = mysql_real_escape_string ($stranica);
$result = mysql_query ( «INSERT INTO messages (author, message, stranica, date) VALUES (‘$author’, ‘$message’, ‘$stranica’, ‘$date’)» );
if ($result == true) > else
> else >
if ($_POST[ ‘js’ ] == ‘no’ ) if ($_POST[ ‘message’ ] != » && $_POST[ ‘author’ ] != »)
$author = $_POST[ ‘author’ ];
$author = addslashes ($author);
$author = htmlspecialchars ($author);
$author = stripslashes ($author);
$author = mysql_real_escape_string ($author);
$message = $_POST[ ‘message’ ];
$message = addslashes ($message);
$message = htmlspecialchars ($message);
$message = stripslashes ($message);
$message = mysql_real_escape_string ($message);
$stranica = $_POST[ ‘stranica’ ];
$stranica = addslashes ($stranica);
$stranica = htmlspecialchars ($stranica);
$stranica = stripslashes ($stranica);
$stranica = mysql_real_escape_string ($stranica);
$result = mysql_query ( «INSERT INTO messages (author, message, stranica, date) VALUES (‘$author’, ‘$message’, ‘$stranica’, ‘$date’)» );
if ($result == true) > else
> else >
?>
Следующий файл в ту же директорию — файл связи с базой данных connect.php
$db = mysql_connect ( «localhost» , «name_BD» , «3Pt3yeRg» );
mysql_select_db ( «name_BD» ,$db);
mysql_query ( «SET NAMES utf8» );
?>
И последнее, что нам осталось сделать — это соединить нашу страницу, на которой будут выводится комментарии, с БД.
Для этого в самом верху страницы, перед !DOCTYPE html, вставляем следующий код
Теперь идём в БД MySQL. если у вас ещё нет БД, то её нужно создать.
На разных хостингах это делается по разному, поэтому я не буду подробно объяснять как это делается, а как создать БД на Денвере, можно прочитать здесь.
Когда база данных создана, заходим в phpMyAdmin, там должна быть строчка с именем вашей БД, и всё. Нам необходимо создать в ней таблицу.
Проходим во вкладку SQL — верхнее меню.
И в открывшемся окне пишем следующий запрос
CREATE TABLE `messages` (
`id` int(3) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`author` varchar(30) NOT NULL,
`message` text NOT NULL,
`date` varchar(25) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Обратите внимание на левые апострофы, на клавиатуре на букве Ё.
Нажимаем Вперёд — всё таблица создана.
Блин, забыл привязку к конкретной странице. Переходим в таблицу во вкладку Структура, и добавляем одно поле с названием stranisa
Ну вот и всё, можно идти на свою страницу и тестировать комментарии.
Со стилевым оформлением, я надеюсь, вы справитесь самостоятельно.
После тестирования заходим снова в БД, в phpMyAdmin, в нашу созданную таблицу — все комментарии здесь
Нажимаем Отметить все и Изменить, вам откроются все отправленные комментарии, с указанием страниц, с которых они были отправлены.
Здесь их можно редактировать, удалять и переносить на другие страницы.
На этом всё. Вы можете изменить имена файлов и таблиц, но тогда внимательно просмотрите весь представленный код, и замените имена везде, где они фигурируют.
Использованы материалы сайта age-dragon.com
Как сделать комментирование на сайте
Очень часто у меня спрашивают, как сделать комментирование на сайте на PHP. Я решил не объяснять на пальцах каждому, а просто написать статью, в которой показать, как делается комментирование на сайте с использованием PHP и MySQL.
Мы сейчас будем разбирать PHP-код для создания комментирования на сайте, где имеется множество страниц, на каждой из которых свои комментарии. Например, таким образом, реализовано у меня. Это самый популярный вариант, когда у каждой страницы (статьи, поста и прочего) свой набор комментариев.
Первым делом, создаём таблицу в базе данных (пусть она называется comments), где будут храниться комментарии со следующими полями:
- id — уникальный идентификатор.
- page_id — хранится идентификатор той страницы, на которой находится данный комментарий.
- name — имя того, кто оставил комментарий.
- text_comment — текст комментария.
После создания таблицы, давайте создадим HTML-форму, которую нужно будет размещать на каждой странице, где Вы хотите разрешить добавление комментариев:
Единственная особенность данного HTML-кода — это input hidden. В value должен находиться уникальный идентификатор текущей страницы (статьи или поста).
Теперь займёмся обработкой формы. Для этого создаём файл comment.php с таким кодом:
/* Принимаем данные из формы */
$name = $_POST[«name»];
$page_id = $_POST[«page_id»];
$text_comment = $_POST[«text_comment»];
$name = htmlspecialchars($name);// Преобразуем спецсимволы в HTML-сущности
$text_comment = htmlspecialchars($text_comment);// Преобразуем спецсимволы в HTML-сущности
$mysqli = new mysqli(«localhost», «root», «», «db»);// Подключается к базе данных
$mysqli->query(«INSERT INTO `comments` (`name`, `page_id`, `text_comment`) VALUES (‘$name’, ‘$page_id’, ‘$text_comment’)»);// Добавляем комментарий в таблицу
header(«Location: «.$_SERVER[«HTTP_REFERER»]);// Делаем реридект обратно
?>
И, наконец, последняя стадия — это вывод комментариев на странице:
$page_id = 150;// Уникальный идентификатор страницы (статьи или поста)
$mysqli = new mysqli(«localhost», «root», «», «db»);// Подключается к базе данных
$result_set = $mysqli->query(«SELECT * FROM `comments` WHERE `page_id`=’$page_id'»); //Вытаскиваем все комментарии для данной страницы
while ($row = $result_set->fetch_assoc()) print_r($row); //Вывод комментариев
echo «
«;
>
?>
Вот и всё. Безусловно, это лишь база, необходимая для создания возможности комментирования на сайте. Здесь самое минимальное, что придётся сделать — это оформить внешний вид комментариев. Также надо обязательно проверить поступившие данные из формы. Также можно добавить дополнительные поля (например, e-mail ещё запрашивать).
Но всё это уже детали, а комментирование на PHP уже сделано.
Чтобы понять весь алгоритм и, главное, научиться самостоятельно создавать подобные скрипты, обязательно изучите PHP и MySQL, и в этом Вам поможет мой Видеокурс «PHP и MySQL с Нуля до Гуру«: http://srs.myrusakov.ru/php
Создано 01.02.2012 14:47:38
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 159 ):
не понял с пунктом «вывод комментариев на странице» это создаётся ещё один php файл?? или все в одном? и ещё один вопрос, создал форму, как у вас и пхп файл, как нажимаю в форме кнопку отправить пишет вот такое: query(«INSERT INTO `comments` (`name`, `page_id`, `text_comment`) VALUES (‘$name’, ‘$page_id’, ‘$text_comment’)»);// Добавляем комментарий в таблицу header(«Location: «.$_SERVER[«HTTP_REFERER»]);// Делаем реридект обратно ?>
Вы либо невнимательно читаете, либо Вам ещё просто рано про это вообще читать. Вы основы точно знаете? Теперь по вопросам: 1. Вывод комментариев на той же странице, где форма. 2. Как он может такое писать? Только если, конечно, Вы не открываете через file:///Z:\home. Если так, то забудьте про эту статью. С такой проблемой новички сталкиваются в первый день обучения PHP.
Евгений вы для начала разберите алгоритм создания комментариев. Всё создаётся на одной или двух страницах. Допустим если на двух то: text.php //это файл для формы и вивода комментов update_comment.php //это фаил обработчик Вот и всё!
сорри поспешил, ушел дальше разбираться
Спасибо Михаил всё это знал только вот не знал как id страницы отправить спасибо!!
Салам! Михайил У меня вывод комментариев на странице не выходить. В базе MySQL данные есть но на странице нету!
Тысяча причин, все перечислить невозможно. Могу лишь назвать парочку: по-другому названы поля в таблице, соответственно, неверный запрос. Либо ещё файл не обрабатывает PHP вообще, либо он имеет расширение html, либо запускается неправильно (допустим, просто открывается через двойной клик в браузере).
Михаил, а идентификатор страницы, обычная строка или с Auto_increment
Это уникальный номер страницы (число). А какой он, неважно, главное, чтобы число и уникальный.