В данной статье мы создадим PHP скрипт для реализации системы комментариев на сайте. Наш скрипт комментариев в основном будет реализован, как вы уже догадались на языке программирования PHP. Как сопутствующие языки программирования будут: MySQL, JavaScript, а также технология Ajax (Асинхронный javascript), он используется для реализации обмена данными с сервером без перезагрузки страницы, что очень удобно при создании системы комментариев. Само собой, нам понадобятся HTML и CSS, для реализации внешнего вида системы комментариев.
ВНИМАНИЕ! По многочисленным просьбам пользователей созданы исходники. Которые вы можете скачать с этой страницы: demo_comments.rar [26,1 kb] — исходники тестировались на Denwer.
Шаг 1 – Создание таблицы для комментариев в БД
Создание PHP скрипта комментариев следует начать из создания таблицы в БД. Для этого воспользуемся следующим MySQL запросом:
id – это идентификатор самого комментария, имеет значение NOT NULL auto_increment, он обязателен, думаю, вам понятно почему. Ведь это ключ для доступа к конкретному комментарию.
id_article – это идентификатор материала, к которому относится комментарий. В нашем случае это статья, в вашем, можете назвать его как угодно.
name – имя пользователя, который будет добавлять комментарий.
mail – e-mail пользователя.
text – текст комментария, или собственно сам комментарий.
date_add – дата добавления комментария, максимальное значение поля установлено 18 символов, это для того чтобы дата добавления комментария имела вид: 22.07.2011 в 14:03. То есть, получается, что в строке даты у нас 18 символов. А больше нам и не надо, поэтому устанавливаем значение varchar(18).
public – это будет нашим администраторским допуском к публикации комментария. Данное поле будет иметь всего 1 символ, причем цифровой: 1 или 0. (1 – публикуем, 2 – не публикуем).
Шаг 2 – PHP скрипт системы комментариев
Для реализации системы комментариев нам необходимо создать следующие функции:
1. Вывода комментариев
2. Добавления комментариев
Добавление комментариев
Для этого создадим файл add_comment.php. Для начала напишем функцию добавления комментариев. Для этого вставьте в ваш файл, следующий код:
<?php
// Этот блок кода нужен для корректной работы Ajax скрипта
echo ‘<font color=»green»>Комментарий добавлен и ожидает проверки!</font>‘;
}
else
{
echo ‘<font color=»red»>Заполните правильно поля ввода!</font>‘;
}
?>
Немножко обговорим этот php скрипт. Верхний блок кода нужен для корректной работы ajax скриптов. Что происходит в этом блоке кода? Сначала идет задержка работы php скрипта на 1 секунду, это для того, чтобы увидеть анимацию ожидания, при добавлении комментария. Далее выводятся header, которые определяют кодировку контента и т.д. После мы преобразуем в нужную кодировку все входящие данные методом POST. Потому что они будут отосланы средствами ajax, и будут иметь другую кодировку.
Следующими строками php кода, мы устанавливаем параметры валидации . Чтобы все поля формы были заполнены корректно, и если валидация пройдена (true), то сохраняем комментарий в БД, и выводим сообщение, если нет, то выводим сообщение, что поля нужно заполнять верно.
Думаю с этим все понятно.
Вывод комментариев
Теперь напишем вывод комментариев. Для удобства создадим еще один файл show_comments.php
И поместим в него следующий код:
<?php
function show_comments($id_article)//выводвсехкомментариевкстатье
{
include(«config.php»);
$res = mysql_query(«select * from comments where id_article like $id_articleandpublic = 1 order by id», $con) ordie («Error! query – show comments»);
while($arr = mysql_fetch_array($res, MYSQL_NUM))
{
echo »
<div class=main>
<img src=images/comentator.jpg>
<div class=block_name>
<span class=name>[2]</span>
<span class=date>[5]</span>
</div>
<div class=coment>
<div>$arr[4]</div>
</div>
</div>
»;
}
}
?>
Вот это уже настоящая функция для вывода комментариев. Здесь все просто. В предыдущем коде, я не объяснил об файле config.php, который подключается с помощью строки include(«config.php»); Этот файл нам необходим для работы с БД. В нем записаны параметры подключения, вот пример кода этого файла:
<?php
$hostname=«localhost»; // Имя хоста
$login=«root»; // Логин для подкл. к серверу баз даных
Как видите, здесь прописаны настройки подключения, и собственно подключение к БД. Вернемся к нашей функции show_comments($id_article). Она принимает один аргумент, это ид статьи, к которой относятся комментарии, вы должны будете посылать его туда сами. Надеюсь, с этим не будет вопросов. Еще рассмотрим строку: $res = mysql_query(«select * from comments where id_article like $id_article and public = 1 order by id», $con) or die («Error! query – show comments»);
В этой строке записан элементарный запрос к БД, где указывается, что мы выбираем комментарии, относящиеся только к данной статье ($id_article), и те которые одобрил администратор (public = 1).
Шаг 3 – Визуальный вывод комментариев
Для отображения списка комментариев создадим файл comments.php. Данный файл можно будет подключать в нужное место (низ статьи, или иного контента).
Вот так будет выглядеть наш файл, отвечающий за визуальное отображение блока комментариев, а также формы добавления комментариев. Если вы заметили, то дизайн будет подобным к дизайну системы комментариев на нашем сайте (sitear.ru).
Вот так будет выглядеть наш блок комментариев:
А вот так раскрытая форма добавления комментария:
Этот файл имеет HTML код, который не нужно объяснять веб-программисту. Единственное что нужно, внимательно просмотрите код, и там где подсказки типа: «Вмонтируйте…», вставьте свои значения для корректной работы php скрипта комментариев.
В этом коде есть элементы javascript кода, которые не нужно объяснять. В следующем шаге рассмотрим js функции, и тогда все станет понятней.
Шаг 4 – Вспомогательные Javascript и Ajax функции
Все эти функции хранятся в файле js_comments.js. Ниже предоставлена его исходная структура:
/* —————————- */
/* XMLHTTPRequest Enable */
/* —————————- */
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == «Microsoft Internet Explorer»){
request_type = new ActiveXObject(«Microsoft.XMLHTTP»);
Файл большой, но здесь все понятно. Начнем с самого простого, а самое интересное, оставим на потом.
functionclearText(field) – очищает поле ввода при фокусе, предназначена для удобства и дизайна.
functiontoggle(id) – сворачивает и разворачивает div блоки. Также имеет вспомогательные функции gh(), vhe(). Мы уже рассматривали о функции сворачивания и разворачивания блоков, в другой статье.
functioncreateObject() – создает объект XMLHTTPRequest, который будет производить обмен данными с сервером по технологии ajax.
functionajax(param) – функция принимает многомерный массив param, в котором указывается: куда отправлять данные (url), где выводить статус работы скрипта (statbox), метод отправки данных (method), data – все, что мы отправляем на сервер, success– указание на функцию, которая будет принимать ответ сервера и обрабатывать присланные данные.
Вот так вкратце о вспомогательном файле php скрипта комментариев. Как видите, если рассматривать php скрипт комментариев в одиночку, то он может показаться не сложным, но сложно связать вместе разные языки программирования. Только связав несколько языков программирования, получится все красиво и интересно.
Шаг 5 – другие вспомогательные файлы скрипта комментариев
Мы подходим к завершающей части нашей статьи, и рассмотрим CSS файл. Я дам пример его кода, но объяснять, у меня уже нет сил. Если вас не устраивает дизайн блока комментариев, вы легко можете поменять css файл.
style.css:
*{ margin: 0; padding: 0; }*
a {color: #266ba8; text-decoration: none; cursor:pointer;}