Как сделать комментарии на сайте php
Привет всем! Недавно столкнулся с проблемой написания комментариев на сайте. Просмотрел весь интернет в поиске нормальных статей, по поводу написания комментариев на чистом PHP 7. Статьи были, но в основном либо устаревшие, либо не работающие уже совсем. Для написания комментариев Вам необходимо знать PHP 7, MySQL, JavaScript и Ajax. Приступим!
Front-End
Структура
Для начало создаем все нужные файлы и папки.
Далее создаем самую простую форму заполнения комментария.
В comments.php:
Комментарии
Работаем с БД
Подготовка Базы Данных
Сначала создадим нужную нам Базу Данных и таблицу:
Базу данных назовем test.
Далее создаем таблицу:
CREATE TABLE `test`.`messages` ( `id` INT(255) UNSIGNED NOT NULL AUTO_INCREMENT , `author` VARCHAR(30) NOT NULL , `message` TEXT NOT NULL , `date` VARCHAR(25) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
Она должна быть такой структуры:

Подключение к Базе Данных
Теперь подключимся к самой базе данных. Подключаться будем в отдельном файле, чтобы в дальнейшем каждый раз не подключаться.
В файле connect.php пишем:
Вместо login и password вставляете свои значения (логин и пароль соответственно). Например у меня login root, и пароль — root:
test — название нашей Базы Данных.
Пишем сам скрипт
Получение и обработка данных из полей
Теперь нам нужно получить данные из полей. Но для начала сделаем нашу форму немного симпатичнее, чтобы было приятнее с ней работать. В style.css пропишем:
* < max-width: 800px; margin: 0 auto; >textarea < resize: none; >.clear < margin-top: 50px; >#author < width: 100%; height: 4%; font-size: 1.3em; >.is-h < font-weight: bold; font-family: cursive; margin-top: 2%; >#message < width: 100%; font-size: 1.5em; >.is-button < cursor: pointer; color: white; background-color: green; width: 25%; height: 50px; margin-top: 1%; outline: none; /* Убираем линию вокруг кнопки при нажатии */ font-weight: bold; font-family: cursive; font-size: 1.2em; border: none; transition: all 0.3s ease-out; >.is-button:hover
Теперь наша форма должна выглядеть так:

Обработка данных с помощью AJAX
Теперь получим данные из полей, обработаем их и отправим в PHP на доработку.
В файле comments.php, в теге script пропишем:
$(function() < $("#send").click(function()< // При нажатии на кнопку var author = $("#author").val(); // Получаем имя автора комментария var message = $("#message").val(); // Получаем само сообщение $.ajax(< // Аякс type: "POST", // Тип отправки "POST" url: "sendMessage.php", // Куда отправляем(в какой файл) data: , // Что передаем и под каким значением cache: false, // Убираем кеширование success: function(response)< // Если все прошло успешно var messageResp = new Array('Ваше сообщение отправлено','Сообщение не отправлено Ошибка базы данных','Нельзя отправлять пустые сообщения'); var resultStat = messageResp[Number(response)]; if(response == 0)< $("#author").val(""); $("#message").val(""); $("#commentBlock").append("Автор: "+author+"
"+message+"");> $("#resp").text(resultStat).show().delay(1500).fadeOut(800);>>);return false;>);>);
Обработка данных и запись их в БД
Теперь приступим к самому интересному. Для начала нам нужно провести самые примитивные проверки и «словить» данные с AJAX. В sendMessage.php пишем:
query("INSERT INTO `messages` (`author`, `message`, `date`) VALUES ('$author', '$message', '$date')"); // Передаем в БД значения if($result == true)< echo 0; //Ваше сообшение успешно отправлено >else < echo 1; //Сообщение не отправлено. Ошибка базы данных >>else < echo 2; //Нельзя отправлять пустые сообщения >> // Если отключен JavaScript if($_POST['js'] == 'no')< if($_POST['message'] != '' && $_POST['author'] != '')< $author = $_POST['author']; $author = addslashes($author); $author = htmlspecialchars($author); $author = stripslashes($author); $message = $_POST['message']; $message = addslashes($message); $message = htmlspecialchars($message); $message = stripslashes($message); $date = date("d-m-Y в H:i:s"); $result = $mysql->query("INSERT INTO `messages` (`author`, `message`, `date`) VALUES ('$author', '$message', '$date')"); if($result == true)< echo "Ваше сообшение успешно отправлено"; //Ваше сообшение успешно отправлено >else < echo "Сообщение не отправлено. Ошибка базы данных"; //Сообщение не отправлено. Ошибка базы данных >>else < echo "Нельзя отправлять пустые сообщения"; //Нельзя отправлять пустые сообщения >> ?>
Вывод комментариев
Теперь дело за малым. Осталось всего лишь вывести эти комментарии в приятной для глаза форме.
Сначала необходимо подключиться к БД в comments.php. В самом верху пишем:
В div с в файле comments.php пишем:
query("SELECT * FROM `messages`"); /*Получаем все данные из таблицы*/ $comment = $result->fetch_assoc(); /* В результирующий массив */ doАвтор: ".$comment['author']."
".$comment['message']."


