Пыльца сосны Россия
Инструкция
Все нюансы сборки, переработки, заготовки и применения.
-- Купить пыльцу высшего качества --

Комментарии для сайта

Готовый код скрипта комментариев с пошаговой инструкцией, где его разместить, как осуществить связь с MySQL, и что и куда залить и подключить, чтоб всё заработало.

Я покажу вам готовый код скрипта и расскажу пошагово где его разместить, как осуществить связь с MySQL, и что и куда залить и подключить, чтоб всё заработало.

Сразу уточню, что весь представленный здесь код преобразуется в файлы в Notepad++ с соответствующим расширением и в кодировке utf8

Сначала сам скрипт


<script type="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("<div class='comment'><strong>"+author+"</strong><br>"+message+"</div>");
}$("#resp").text(resultStat).show().delay(1500).fadeOut(800);}});return false;});});
</script>

Разместить этот скрипт на странице можно двумя способами.

1. Скрипт размещается непосредственно на странице между тегами <head></head>

2. В корневой директории сайта создаётся папка c названием, например js, если таковой ещё нет, и в неё помещается файл скрипта под названием, допустим script_comments.js

Тогда на странице, в тег <head></head> прописывается подключение этого файла к странице.


<script type="text/javascript" src="http://mysite.ru/js/script_comments.js"></script>

Какой из этих вариантов лучше, я сказать затрудняюсь, но второй мне представляется более удобным.

Следующим шагом размещаем на странице код вывода комментариев и код формы комментариев.

Вставляется это всё одним блоком в том месте страницы, где вы хотите отобразить комментарии, обычно сразу после статьи.

<div id="commentBlock">
<?php
$result = mysql_query("SELECT * FROM messages WHERE stranica='$_SERVER[PHP_SELF]'",$db);
$comment = mysql_fetch_array($result);
do{echo "<div class='comment'><strong>".$comment['author']."</strong><br><br><span class='new'>".$comment['date']."</span><br><br>".$comment['message']."</div>";
}while($comment = mysql_fetch_array($result));
?>
</div>
<form action="sendMessage.php" method="post" name="form">
<p>Автор:<br> <input name="author" type="text" id="author"></p>
<p>>Напишите ваш отзыв:<br><textarea name="message" style="width:80%; min-height:200px;" id="message"></textarea></p>>
<input name="stranica" type="hidden" value=""<?php echo $_SERVER['PHP_SELF'];?>" id="stranica">
<input name="js" type="hidden" value="no" id="js">
<p><input name="button" type="submit" value="Отправить" id="send"> <span id="resp"></span></p>
</form>;

Так, с клиентской частью закончили, теперь пойдём на сервер.

Первым делом нужно скачать маленькую библиотеку jquery-1.5.1.min.js. (82kb)

Обычно представлена она открытым кодом, значит нажимаем правой клавишей и Сохранить как… сохраняем файл себе на компьютер.

Затем этот файл загружаем на сервер в папку js, которую мы создали на предыдущем шаге, и подключаем этот файл к странице, на которой будут выводится комментарии в тег <head></head>.

У нас там уже есть один подключенный скрипт, рядом с ним прописываем ещё один.

<script type="text/javascript" src="http://fondkd.ru/js/jquery-1.5.1.min.js"></script>

Затем в директорию в которой находится файл страницы с комментариями, нужно загрузить файл с командами для БД.

<?php include("connect.php");
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);

$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);

$date = date("d-m-Y в H:i:s");

$result = mysql_query("INSERT INTO messages (author, message, stranica, date) VALUES ('$author', '$message', '$stranica', '$date')");
if($result == true){echo 0;
}else{echo 1;}
}else{echo 2;}}

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);

$date = date("d-m-Y в H:i:s");

$result = mysql_query("INSERT INTO messages (author, message, stranica, date) VALUES ('$author', '$message', '$stranica', '$date')");
if($result == true){echo "";
}else{echo "";}
}else{echo "";}}
?>

Следующий файл в ту же директорию — файл связи с базой данных connect.php


<?php
$db = mysql_connect("localhost","name_BD","3Pt3yeRg");
mysql_select_db("name_BD",$db);
mysql_query("SET NAMES utf8");
?>

И последнее, что нам осталось сделать — это соединить нашу страницу, на которой будут выводится комментарии, с БД.

Для этого в самом верху страницы, перед !DOCTYPE html, вставляем следующий код

<?php include ('connect.php');?>

Теперь идём в БД 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 основы. Добавьте в закладки постоянную ссылку.
А так же:

19 комментариев на «Комментарии для сайта»

  1. Борис говорит:

    Буду устанавливать и пробовать у себя на сайте.

  2. Иван говорит:

    Имеет ошибки! Не могу установит!

    1. Пишеш в базе добавим название stranisa, а в скриптов пишет stranica.
    2. Пишеш «Затем в директорию в которой находится файл страницы с комментариями, нужно загрузить файл с командами для БД.» — а какое имя етого файла?

    3. Файл connect.php
    ———————————————————————————

    ———————————————————————————
    не связывается с БД!

    Ошибки такие:
    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in H:\OSPanel\domains\test.ru\connect.php:2 Stack trace: #0 H:\OSPanel\domains\test.ru\index.html(1): include() #1 {main} thrown in H:\OSPanel\domains\test.ru\connect.php on line 2

    Что надо сделать, чтобы установит?

  3. kukusik говорит:

    Спасибо за скрипт, кое-как нашла что-то нормальное

  4. Сергей говорит:

    Отлично

  5. Питер говорит:

    Класс!!!

  6. Иван говорит:

    Крутой!

  7. Милан говорит:

    Здравствуйте. Как должен называться фаял с командами для Mysql, что или где на него ссылается. Потому как я создал фаял command.php и вставил весь этот код с командами поместив этот фаял в корень своего сайта.

  8. Александр говорит:

    Вроде прикольная статья, пробуем!

  9. stariс говорит:

    Есть такие решения в природе и не одно, но я их не юзал.

  10. Александр говорит:

    А без баз данных у вас нет решений по комментариям случайно?

  11. Сал говорит:

    Доброго дня. Подсажите пожалуйста, почему после обновления страницы(после ввода коментов) коменты исчезают, хотя в БД они есть! И как сделать, чтобы коменты автоматов выгружались на страницу. Спасибо.

  12. Вячеслав говорит:

    Подскажите пожалуйста, использовал все вышейзложеное, столкнулся с проблемой!!! Код php , который для результата, виден на странице. А так же, сам комент появляется только на странице и исчезает после обновления, а на сервере в БД его как не было, так и нет? Спасибо.

  13. Doston говорит:

    Как сделать чтобы комментарии на каждом сайте отдельно показалось

  14. Name говорит:

    Как сделать чтобы комментарии на каждом сайте отдельно показалось

  15. Irma говорит:

    спасибо очень интересная статья

  16. Татьяна говорит:

    А каптча в коде есть, я не увидела, не очень код умею читать?

  17. Светлана говорит:

    Мне помогла данная статься. Спасибо. Инфа доступно написана.

  18. Николай говорит:

    Много действий, аж запутался )))

  19. Симферополь говорит:

    Супер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *