Как сделать комментирование на сайте
Очень часто у меня спрашивают, как сделать комментирование на сайте на PHP. Я решил не объяснять на пальцах каждому, а просто написать статью, в которой показать, как делается комментирование на сайте с использованием PHP и MySQL.
Мы сейчас будем разбирать PHP-код для создания комментирования на сайте, где имеется множество страниц, на каждой из которых свои комментарии. Например, таким образом, реализовано у меня. Это самый популярный вариант, когда у каждой страницы (статьи, поста и прочего) свой набор комментариев.
Первым делом, создаём таблицу в базе данных (пусть она называется comments), где будут храниться комментарии со следующими полями:
- id - уникальный идентификатор.
- page_id - хранится идентификатор той страницы, на которой находится данный комментарий.
- name - имя того, кто оставил комментарий.
- text_comment - текст комментария.
После создания таблицы, давайте создадим HTML-форму, которую нужно будет размещать на каждой странице, где Вы хотите разрешить добавление комментариев:
<form name="comment" action="comment.php" method="post">
<p>
<label>Имя:</label>
<input type="text" name="name" />
</p>
<p>
<label>Комментарий:</label>
<br />
<textarea name="text_comment" cols="30" rows="50"></textarea>
</p>
<p>
<input type="hidden" name="page_id" value="150" />
<input type="submit" value="Отправить" />
</p>
</form>
Единственная особенность данного HTML-кода - это input hidden. В value должен находиться уникальный идентификатор текущей страницы (статьи или поста).
Теперь займёмся обработкой формы. Для этого создаём файл comment.php с таким кодом:
<?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"]);// Делаем реридект обратно
?>
И, наконец, последняя стадия - это вывод комментариев на странице:
<?php
$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 "<br />";
}
?>
Вот и всё. Безусловно, это лишь база, необходимая для создания возможности комментирования на сайте. Здесь самое минимальное, что придётся сделать - это оформить внешний вид комментариев. Также надо обязательно проверить поступившие данные из формы. Также можно добавить дополнительные поля (например, e-mail ещё запрашивать).
Но всё это уже детали, а комментирование на PHP уже сделано.
Чтобы понять весь алгоритм и, главное, научиться самостоятельно создавать подобные скрипты, обязательно изучите PHP и MySQL, и в этом Вам поможет мой Видеокурс "PHP и MySQL с Нуля до Гуру": http://srs.myrusakov.ru/php
-
- Михаил Русаков
Комментарии (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 страницы отправить спасибо!! <input type="hidden" name="page_id" value="150" />
Ответить
Салам! Михайил У меня вывод комментариев на странице не выходить. В базе MySQL данные есть но на странице нету!
Ответить
Тысяча причин, все перечислить невозможно. Могу лишь назвать парочку: по-другому названы поля в таблице, соответственно, неверный запрос. Либо ещё файл не обрабатывает PHP вообще, либо он имеет расширение html, либо запускается неправильно (допустим, просто открывается через двойной клик в браузере).
Ответить
Михаил, а идентификатор страницы, обычная строка или с Auto_increment
Ответить
Это уникальный номер страницы (число). А какой он, неважно, главное, чтобы число и уникальный.
Ответить
хорошая статья)) попробую ))
Ответить
Здравствуйте, как я понял, мне нужно создать два файла, один - это comment.php, а другой - это <form name="comment" action="comment.php" method="post"> <p> <label>Имя:</label> <input type="text" name="name" /> </p> <p> <label>Комментарий:</label> <br /> <textarea name="text_comment" cols="30" rows="50"></textarea> </p> <p> <input type="hidden" name="page_id" value="150" /> <input type="submit" value="Отправить" /> </p> </form> <?php $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 "<br />"; } ?> расширение у него будет .php??? ну и соответственно таблицу создаю и выдает ошибку Array ( [id] => 1 [page_id] => 150 [name] => [text_comment] => ) Array ( [id] => 0 [page_id] => 150 [name] => врар [text_comment] => арао )
Ответить
Да, поскольку используется PHP-код.
Ответить
теперь выдает Array ( [id] => 0 [page_id] => 150 [name] => Петр [text_comment] => Все хорошо )) ) Это как вообще?
Ответить
Как мне сделать, чтоб просто выводило Имя и комментарий?
Ответить
Вы не умеете работать с массивами? Очень плохо... Найдите в Google материалы по работе с массивами в PHP, посмотрите, что это такое, как они создаются, как считываются значения.
Ответить
Разобрался, сделал. Теперь у меня вопрос по поводу проверки на ввод данных! Нужно чтобы выводились сообщения если не введено имя и текст комментария. Что-то не получается (( $log ==""; $error="no"; //флаг наличия ошибки if($name == ''){ $log .= "Пожалуйста, введите Ваше имя<br>"; $error = "yes"; } //Проверка наличия введенного текста комментария if (empty($text_comment)){ $log .= "Необходимо указать текст сообщения!<br>"; $error = "yes"; } Подскажите, что не так?
Ответить
$log ==""; - это не присваивание, а сравнение.
Ответить
и ещё, у меня русские буквы не отображаются. Я пишу <meta content="text/html; charset=utf8"> но ничего не меняется (
Ответить
http://myrusakov.ru/php-encoding-problems.html
Ответить
Петр, как Вы разобрали массив? Подскажите мне. Дайте ссылку. Никак не могу понять, что делать дальше.
Ответить
Михаил, у меня на сайте около каждого(входящего или исходящего) сообщения стоит ссылка \ответитть\ но, я сделал что-то типа диалогов, как сделать ссылку в этом случае
Ответить
В этом случае, при нажатии на "ответить" должна отправляться уже заполненная форма.
Ответить
Михайл я новичок, все вроде сделал но комент как и у предыдущего человека в базу данных попадает но на странице его нет. Ну да ладно это я со временем разберусь у меня другой вопрос "код вывода комментария на страницу должен находиться на странице comment.php ??? т.e на той-же странице что и код обработки.
Ответить
Можно и так, а можно в разных файлах - это не так важно.
Ответить
Ёще один вопросик, а как код понимает в каком месте страницы ему отобразить комментарий.С формой то все понятно она четко прописана а вот место где комментарий выводиться не очень понятно.
Ответить
Комментарий выводится в примере через print_r(). Вот где этот print_r и будет написан, в том месте и появится комментарий.
Ответить
Тяжеловато((( видно не созрел я ((. Спасибо огромное все очень пригодилось
Ответить
И все таки не дает мне покоя этот каменный цветок "print_r" где его писать-то Как всегда не понятна элементарная штука как код понимает в каком месте HTML Страницы отображать комментарии не сбоку и не в верху а четко над формой добавления комментария.
Ответить
Так Вы выводите print_r() перед HTML-тегом формы.
Ответить
Михаил, у меня возникла ошибка в коде...Можете подсказать как её устранить? Собственно сама ошибка : Fatal error: Call to a member function fetch_assoc() on a non-object in Z:\home\malina.local\www\index.php on line 53
Ответить
Значит в запросе была ошибка. Всегда лучше проверять, что он вернул, а потом уже делать fetch_assoc()
Ответить
Да кстати я заметил что в новом денвере нет полезности как "$mysqli = new mysqli(...)" Вы не знаете почему её убрали?
Ответить
Не знаю где Вы берете такую версию Денвера. У меня всё работало.
Ответить
Позавчера скачал...и переустановил, ну раз переустановил решил что нибудь написать и увмдел что он ругается на оба файла на одну и туже ошибку Parce error $mysqli->query;
Ответить
Странно. Я давно обновлял, но насколько я помню там можно было установить и старую версию, более стабильную.
Ответить
Всмысле про старую версию
Ответить
Там есть версия на старом PHP 5.2
Ответить
Извините, дурак он и в африке дурак...Я забыл установить соединение с бд пожтому он и ругался
Ответить
Сделай так: while ($row = mysql_fetch_assoc($result_set)) { print_r($row); //Вывод комментариев echo "<br />"; }
Ответить
Насчёт в одном файле или в разных, разница в том что вам придётся перенаправлять пользователя на тот файл в котором лежит скрипт извлекающий коммент, а это не удобно. Не могу с массивами разобраться... Пару дней, и разберусь... Но время...
Ответить
А всё таки... Как быть если надо вставить код в сообщение, а все теги становятся просто текстом!!! Как быть в такой ситуации?
Ответить
Здравствуйте. Не знаю как это убрать... Комментарии добавляются нормально, но в таком виде: Array ( [id] => 0 [page_id] => 150 [name] => Ксю [text_comment] => Пампампам... ) Как сделать что бы нормально было?
Ответить
Выводите каждое значение массива отдельно. Желательно сразу в красивый шаблон. Сейчас у Вас просто распечатывается содержимое массива.
Ответить
Спасибо))
Ответить
Ксюша пришлите пожалуйста выведение каждого массива в кодовом вырвжении
Ответить
Михаил сделал вроде бы все, как написано в статье, но нажимаю ,,Сохранить,, появляется вот это Warning: mysqli::mysqli() [mysqli.mysqli]: (42000/1049): Unknown database 'db' in X:\home\mysite.local\www\comment.php on line 8 Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in X:\homе\mysite.local\www\comment.php on line 9 Warning: Cannot modify header information - headers already sent by (output started at X:\home\mysite.local\www\comment.php:1) in X:\home\mysite.local\www\comment.php on line 10 Warning: mysqli::mysqli() [mysqli.mysqli]: (42000/1049): Unknown database 'db' in X:\home\mysite.local\www\comment.php on line 15 Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in X:\home\mysite.local\www\comment.php on line 16 Fatal error: Call to a member function fetch_assoc() on a non-object in X:\home\mysite.local\www\comment.php on line 17 В чем причина...
Ответить
База у Вас не создана, либо неправильные данные для подключения к ней, из-за этого ошибка.
Ответить
в базу не заноситься русский текст, кодировка колонки стоит utf-8 general_ci почему кирилицы нету?
Ответить
Может на самом сервере кодировка не установлена: http://myrusakov.ru/php-encoding-problems.html
Ответить
Достаточно просто создать базу данных и ввести её данные в формы или необходимо создать таблицу в базе данных. Спасибо.
Ответить
Почитайте про структуру базы данных: http://myrusakov.ru/struktura-basy-dannyh.html
Ответить
Структура понятна. А для начинающих скриншот таблицы базы данных для комментариев можно? Буду очень признателен.
Ответить
В этой статье написано всё.
Ответить
Последние два тега добавлять в comment.php?
Ответить
Один в comment.php другой на саму страницу.
Ответить
Все сделал правильно, но вот что получается: на странице на которой разрешено комментирование появляется поле имени, комментария, а под ним такое:Warning: mysqli::mysqli() [mysqli.mysqli]: (42000/1049): Unknown database 'db' in X:\home\vseobavto.local\www\vnedorojniki_vikipedia.php on line 134 Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in X:\home\vseobavto.local\www\vnedorojniki_vikipedia.php on line 135 Fatal error: Call to a member function fetch_assoc() on a non-object in X:\home\vseobavto.local\www\vnedorojniki_vikipedia.php on line 136 А когда нажимаешь отправить такое: Warning: mysqli::mysqli() [mysqli.mysqli]: (42000/1049): Unknown database 'db' in X:\home\vseobavto.local\www\comment.php on line 8 Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in X:\home\vseobavto.local\www\comment.php on line 9 Warning: Cannot modify header information - headers already sent by (output started at X:\home\vseobavto.local\www\comment.php:8) in X:\home\vseobavto.local\www\comment.php on line 10 Что делать?
Ответить
Базы данных у Вас нет, либо она по-другому называется.
Ответить
Где писать название?
Ответить
Это нужно то что Вы написали просто скопировать и все?
Ответить
Да, нужно только подставить свои данные для подключения к базе.
Ответить
Куда именно писать данные? Какие данные нужно вводить?
Ответить
Туда где в комментарии написано " Подключаемся к базе данных". Вы бы лучше почитали статьи про SQL, чтобы лучше разобраться. Нужно ввести логин и пароль пользователя базы, имя базы. Ну и сама таблица в базе у Вас должна существовать с теми названиями, которые у меня там приведены.
Ответить
После того как я создал таблицу, мне самому нужно прописать в ней id, page_id, name и text_comment? Или же это всё пропишится само по себе после нажатия на кнопку "Отправить"? Ответ нужен срочно!
Ответить
Что значит: "В value должен находиться уникальный идентификатор текущей страницы"? На примере Ти задал 150. Мне нужно на каждой странице где будет форма комментов задавать разные числа (не повторять их)? А эти числа будут сами записываться в таблицу, или мне и там нужно прописывать их?
Ответить
Таблицу нужно полностью создать, в коде из статьи нет sql-команд на создание таблицы. Идентификатор должен подставлять движок, если у Вас множество страниц с разным id.
Ответить
У меня всего 5 статических страниц на которых я хочу вставить комменты! Что делать?
Ответить
Пишите id вручную для каждой страницы, раз они статические.
Ответить
Привет всем !!! Скажите куда мне добовлять последний код <?php $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 "<br />"; } ?> Теперь если его надо вставить в самом начале как мне добавить под формой коментарии добавить тег для записи коментариев
Ответить
В той части страницы, где выводятся комментарии.
Ответить
Как исправить такую проблемку? Вместе с именем и текстом на страницу выводится: Array ( [id] => 2 [page_id] => 6 [name] => Руслан [text_comment] => А это текст комментария!!! )
Ответить
Выводите каждое значение массива отдельно. Желательно сразу в красивый шаблон. Сейчас у Вас просто распечатывается содержимое массива.
Ответить
Понял, но не всё! Я делал всё по этому уроку. В коде вывода комментариев у тебя нет этих значений масива??? Дай пожалуйста код который выводит каждое значение массива отдельно.
Ответить
Вы не знаете, как работать с массивом? Не знаете, что такое ключ и значение? Забрасывайте немедленно этот скрипт, и изучайте самые-самые основы с нуля. Особенно внимательно читайте про массивы. И пока досконально не будете знать и понимать эту тему, бесполезно и бессмысленно двигаться дальше.
Ответить
Что-то у меня это всё не идёт! Я дико извиняюсь, но дай мне пожалуйста код, который выведет все записи правильно (каждое значение массива отдельно).
Ответить
Мне не тяжело подсказать, вот: "<b>".$row["name"]."</b>: ".$row["text_comment"]; Только проку от моей подсказки не много, если Вы самых-самых основ не знаете: http://myrusakov.ru/php-how-study.html
Ответить
Здравствуйте у меня на все это дело выдает ошибку: Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\baht.ru\comment.php:76) in Z:\home\localhost\www\baht.ru\comment.php on line 85 ... Смена кодировки UTF-8 with signature на UTF-8 не помогло! Еще : input hidden. В value должен находиться уникальный идентификатор текущей страницы, вместо "150" что там должно быть, это значение поля page_id, откуда оно должно брать значение, не совсем поняла с этим.
Ответить
В comment.php в 76-й строке происходит вывод, либо через echo, либо просто пробел какой-нибудь за пределами <?php ?>, либо HTML-код начинается. Вот этого вывода не должно быть перед session_start (видимо, от него ошибка идёт). Что находиться в value должно, зависит от Вашего движка, как он отличает одну страницу от другой. Либо если комментирование каких-то статей, то как он отличает одну статью от другой. Обычно это ID, но по-разному бывает.
Ответить
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\baht.ru\comment.php:9) in Z:\home\localhost\www\baht.ru\comment.php on line 18 КОД: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Документ без названия</title> </head> <body> <?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", "", "nazi6a");// Подключается к базе данных $mysqli->query("INSERT INTO `comments` (`name`, `page_id`, `text_comment`) VALUES ('$name', '$page_id', '$text_comment')");// Добавляем комментарий в таблицу header("Location: ".$_SERVER["HTTP_REFERER"]);// Делаем реридект обратно ?> </body> </html>
Ответить
header() не может быть после самого первого вывода HTML-кода, например. Всю эту обработку надо отправить вверх, а весь HTML-код вниз.
Ответить
вытащила из html кода на верх все равно тоже
Ответить
Вы поняли, в чём была ошибка или нет? header() - функция, отправляющая заголовок, то, что там Вы выводите - это уже тело. Не может быть тело раньше головы. На основании этого, определите ещё одну ошибку и исправьте её. Единственное, что Вы ещё не обязаны знать - это то, что кодировка должна быть строго UTF-8 без BOM (а не просто UTF-8), всё остальное Вы сейчас в состоянии исправить.
Ответить
Это означает, что кодировка должна быть такой: ANSI as UTF-8?
Ответить
В notepad++ будет написано так.
Ответить
Уважаемый Михаил! Я с трудом осваиваю вашу программу по комментариям на странице сайта. НО! Со страницы HTML в базу данных перемещаю записи сделанные на этой странице. НО! Не понимаю как вывести записи из базы данных на страницу HTML. Как второй код PHP должен передавать текст сообщения на страницу с HTML. Спасибо
Ответить
Чтобы создавать подобные скрипты, нужно знать всю базу по PHP: http://myrusakov.ru/php-how-study.html
Ответить
Спасибо Михаил. Но второй php код у Вас вывешен и куда его? Вставлять?
Ответить
На страницу, на которой должны выводиться комментарии.
Ответить
Михаил! И последний вопрос! Как избавиться от "мусора":Array ( [id] => [page_id] => 150 [name] =>Вася [text_comment] => Как помочь? )
Ответить
echo $comment["name"].": ".$comment["text_comment"];
Ответить
Миша! Поправил echo $comment["name"].": ".$comment["text_comment"]; Ничего не изменилось! Вот и думаю... А содержание учебных дисков так же с недосказонностью?
Ответить
А что здесь недосказанного? В курсе разбирается всё с нуля. А если Вы, проигнорировав мой совет прочитать статью, по-прежнему продолжаете спрашивать про комментарии, хотя там чётко я написал про "спецов", подобных Вам (прямо Вашу задачу описал про вывод массива). К сожалению, такие невнимательные ученики не способны научиться создавать сайты. Надо внимательно читать то, что я даю, тогда вопрос про то как вывести массив Вы бы не задали. Вы себе даже представить не можете, насколько он "начален", это 1-е занятие самого лёгкого курса для самых-самых начинающих, и Вы задаёте вопрос в той теме, которая рассчитана уже на более-менее опытных. Такое ощущение, что первоклассник пришёл к студентам и задаёт им вопрос, сколько будет 2*2.
Ответить
Михаил! Все что у Вас здесь издано по поводу комментариев на странице сайта работает на денвере. Правда не достаточно корректно. А в "поле" на хостинге УВЫ! Пришлось создать таблицы под каждую страницу и основательно переработать коды PHP. И обращаться к серверу в php.ini Спасибо за искру к знаниям.
Ответить
увлекся таблицами вот хотелось бы добавить поле в таблице с временем создания комментария,но не смог найти код.подскажите.
Ответить
Его надо не искать, а самому написать. А если не можете, то ознакомьтесь с этой статьёй: http://myrusakov.ru/php-how-study.html
Ответить
понятно, я создал поле "data", там выходит:0000.00.00 тепорь осталось вывести в MySQL текущую дату,как это сделать,нашел предпологаемый код: mysqli>SELECT something FROM `comments` WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; но он вроде неполный.как написать правильно?спасибо,прошу прщения за частые темы
Ответить
Храните в базе UNIX_TIMESTAMP, то есть то, что возвращается в PHP функцией time().
Ответить
не понял. а начало кода с $rs=.........
Ответить
везде пишут SELECT unix_timestamp(now()); а как вставлять код,непонятно
Ответить
SELECT - это выборка, а я говорю про хранение самих записей. Вместо даты там должны быть числа написаны в самой базе.
Ответить
здравствуйте,в этом скрипте,хотел добавить отправку на емайл.вот часть кода: $to = "[email protected]"; $subject="Письмо от ".$name; писмо приходит,но пустым.как сделать правильно запрос,помогите разобратьса.спасибо
Ответить
http://myrusakov.ru/email-php.html
Ответить
ник не могу вывести $subject = "Robot - Робот";
Ответить
Михаил, вопрос о форме комментариев через виджеты соц. сетей. Для моего сайта с точки зрения поисковика в этом есть какой-либо плюс? Считается ли обновлением контента появление комментариев на странице моего сайта, если сами эти комментарии принадлежат соц.сети?
Ответить
Поисковая система не видит комментариев социальных сетей, потому что они добавляются через JavaScript.
Ответить
здравствуйте,можно ли найти урок,как добавить регистрацию для комментариев?не для всего сайта,а для добавления комментария.
Ответить
Нет такого урока, тут надо изучать PHP и MySQL, смотреть отдельно эту статью и смотреть отдельно, как делается регистрация и авторизация пользователей, затем пытаться соединить, в общем, тут без хороших знаний никак.
Ответить
Привет, Михаил - как создать таблицу в базе данных , не понимаю , файл создать что ли .Хочу поставить комментарии на одну страницу . Сайт у меня на бесплатном хостинге
Ответить
На бесплатном хостинге никак, скорее всего. А вообще через phpmyadmin создаётся.
Ответить
там есть phpmyadmin
Ответить
http://myrusakov.ru/phpmyadmin-table.html
Ответить
Не знаю даже...У меня вроде всё правильно, только в БД ничего не сохраняется...Даже ошибки не выдаёт никакой. Скрин:http://forum.php.su/printfile.php?action=attach&img=yes&f=1&t=8338&id=2
Ответить
http://myrusakov.ru/php-finderror.html
Ответить
верно ли будет такая строка print_r ($row["name"]);print_r ($row["text_comment"]); //Вывод комментариев если не сложно подскажите как можно поставить пробел между name и text_comment. А то слитно отображается!
Ответить
echo $row["name"]; и echo $row["text_comment"]; достаточно
Ответить
как можно сделать ,чтобы новые комментарии были внизу $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'");
Ответить
Отсортировать по дате в запросе через ORDER BY `поле_отвечающее_за_дату`. Безусловно, это поле нужно так же создать и в нём должно быть значение, отвечающее за дату и время создания комментария.
Ответить
а какое значение отвечает за дату?
Ответить
Например, количество секунд, прошедших с полуночи 01.01.1970, с таким форматом проще будет работать потом.
Ответить
Комментарии сделал, все отлично работает! Михаил, подскажите, а как теперь вывести количество оставленных пользователями комментариев под каждой статьей?
Ответить
Есть массив с комментариями и есть функция count(), не вижу проблем.
Ответить
Здравствуйте, Михаил!Я всё сделал и решил сделать форму, но как только начал делать текст комментария в одну строку.Я уже перепробовал много стиле в css но ничего не помогает. Вот код: <div style="clear: left;"> <?php $page_id = 150; $mysqli = new mysqli("", "", "", ""); $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'"); while ($row = $result_set->fetch_assoc()) { if (count($row) != 0) {?> <? $i = 3; while ($i < count($row)) {?> <span><b><?=$row["name"]?></b></span><br /> <span><?=$row["text_comment"]?></span><br /> <hr /> <?$i++?> <?}?> <?}?> <?}?> </div> Если будет время помогите пожалуйста.С уважением, Андрей.
Ответить
Михаил подскажите пожалуйста как реализовать данные комментарии если я использую tpl файлы. Проблема в том что комментарии у меня выводятся, Но вверху страницы. То есть выше шапки сайта либо же ниже футера.
Ответить
http://myrusakov.ru/php-template.html
Ответить
в админ панели к статье подключить комментирование не сложно,но как сделать так ,чтобы комментирование было именно к зтой статье,пользуясь одной и тойже обработкой,или пример выше тоже подойдет,помоему нет,админ панель со статьями одна
Ответить
Этот пример можно применить где угодно.
Ответить
А как добавить ещё аватарку к комментарием с сервиса Gravatar?
Ответить
Добрый день! Михаил, я сделала вроде как у вас написано (создала таблицу в phpMyAdmin, сделала файл comment.php и внесла туда данные по приему и выводу комментариев, добавила код комментария на сайт но: 1. не прописывается имя в форме для комментариев, 2. при нажатии на кнопку "отправить" возвращаюсь на ту же страницу без комментария. Подскажите в чем причина? Заранее спасибо!
Ответить
Для начала вручную проверить sql запрос в phpmyadmin.
Ответить
Вот что выдает sql запрос: SELECT * FROM `comments` WHERE 1 Сейчас при нажатии на кнопку "отправить" попадаю на пустую страницу с адресом: www.сайт.ru/comment.php
Ответить
Он должен вернуть хоть что-то. У Вас база не пустая же.
Ответить
Вот что появляется при нажатии на кнопку "отправить" Fatal error: Class 'mysqli' not found in /home/k/kopatel345.hut4.ru/WWW/comment.php on line 8 пожалуйста помогите
Ответить
На бесплатных хостингах, видимо, не заботятся о версиях PHP. Поэтому я и рекомендую использовать только платные, а создавать и тестировать можно всё на denwer. Что касается хостинга, то рекомендую этот: http://myrusakov.ru/review-hostia.html
Ответить
А точно причина в этом?
Ответить
Да,причина точно в этом. На вашем хостинге используется PHP 4.3.9. PHP стало работать с mysqli c версии 5 Используйте хотя бы дешёвые платные хостинги. Или же измените запрос в соответствии с PHP более старых версий
Ответить
Здравствуйте, Михаил! К вам такая некая просьба Выложите на свой отдельный Блог видео-урок "Древовидный вид комментариев(поддерживающий аватар пользователя,редактирование и удаления комментария)"(как у вас на сайте). Было бы очень полезно для многих!
Ответить
Михаил, здравствуйте. Скажите, я точно все правильно понял? Создал базу данных db, в ней таблицу comments и поля с названиями по вашему примеру, вставил html-код в index.html, создал файл comment.php, куда целиком поместил ваш PHP-код. На моей странице появились поля заполнения с "именем" и "комментарием". Захотел проверить, вписал туда несколько слов, жму кнопку "отправить" и ничего на страницу не выводится, никаких ошибок тоже не выдается. Посмотрел еще раз таблицу, а там почему-то каждая написанная буква текста заменена на знак "?", но мой восклицательный знак был определен. Подскажите пожалуйста, в чем возможная причина.
Ответить
Илья, здравствуйте. Похоже проблема в кодировке, используйте UTF-8.
Ответить
Специально зарегистрировалась, чтобы сказать, что у Вас, Михаил, стальные нервы. Некоторые вопросы это нечто :)
Ответить
Здравствуй,Михаил! У тебя на сайте на каждый комментарий можно ответить. После ответа комментарий выводиться "правее" изначального. Вопрос такой: как это реализовать?в какую сторону копать? P.S. пишу сайт с нуля. С php дружу)
Ответить
хотел бы тоже узнать, у меня есть идея: добавить в базе данных поле ref(например), где будет написан id сообщения на который был дан ответ, а так же в файле вывода: проверять при добавлении каждого сообщения нету ли для него ref
Ответить
Михаил, подскажите, пожалуйста, как снизу комментария сделать ссылку "Ответить" и что бы при этом открывалась небольшая форма? Спасибо.
Ответить
Добрый день.После добавления последнего кода на страницу у меня вылетает ошибка в строке while ($row = $result_set->fetch_assoc()) { А также футер сайта пропадает. При удалении кода все нормально. В чем может быть проблема?
Ответить
Исправил ошибку сам. Спасибо вам за статью http://myrusakov.ru/php-fetchassoc.html
Ответить
Еще такой вопрос. При отправлении комментария выдает 404 ошибку. В чем может быть проблема?
Ответить
Здравствуйте пожалуйста помогите мне! создание комментария на сайте как бы мое домашнее задание. А я был занят и мне нужен полный код на php без всяких исправлений. Пожалуйста очень прошу
Ответить
Установи себе готовый сервис комментирования будет тебе готовый код))
Ответить
А как из этого "Array ( [id] => 7 [name] => 1 [text_post] => 1 )" сделать пост?
Ответить
Здраствуте я использовала для сайта чтобы друзия коментировали мой сайт html http://dl2.joxi.net/drive/2016/06/08/0015/0773/1020677/77/f2798b279e.jpg но я пока делаю свой сайт хотела после когда после покупки домена все могут написать коментарии http://dl2.joxi.net/drive/2016/06/08/0015/0773/1020677/77/ac4556ac7d.jpg или будет так все ясно вам сказала вам
Ответить
Михаил, здравствуйте! Там в коде прописан логин и пароль, а если злоумышленники возьмут и войдут в базу данных, пускай даже только в эту. Здесь кодировать не нужно? И данные надо вводить от своей созданной базы данных?
Ответить
У меня такая ошибка -Fatal error: Call to a member function fetch_assoc() on a non-object in /home/p217691/www/andra.marketing/urok1/index.php on line 56 . Почему не знаете?
Ответить
Как сделать что-бы не перезагружалось видео при добавление коммента добавляю коммент видео заново начинает играть с начало подскажите пожалуйста. Ещё один вопрос тут где мы пишем все комменты это аналог системы что вы написали выше ?
Ответить
Люди, помогите. Что делать если комментарии выводятся так: "Array ( [id] => 1 [page_id] => 1488 [name] => zsdbvgarbg [text_comment] => aerherhwrhwrh ) Array ( [id] => 2 [page_id] => 1488 [name] => wergrgwergerg [text_comment] => awergetrhtrhtrh )"
Ответить
Здравствуйте, почему у меня выводятся комментарии выводятся как массив? Array ( [id] => 0 [page_id] => 1 [name] => 0 [text_comment] => 0 ) Попытался разобраться в массивах, но там пишут про Array, а в этом скрипте Array не нашёл. Помогите, пожалуйста.
Ответить
А у меня они вообще не выводятся я заметил что кнопка без действия!
Ответить
Покажите пожалуйста на примере как сделать комментирование уже авторизованного пользователя как сейчас я пишу, что бы заново не вводить сдесь имя или логин, везде в интернете искал у всех одно и тоже водит имя или логин затем комментирование
Ответить
Добрый день! Подскажите, как это же прописать через общую function в файле model.php подключение таблицы через константу и выводить на каждую страничку свой comments через foreach. Не могу понять как присвоить и выводить page_id=. Заранее благодарен.
Ответить
Парни, кто подскажет как редактировать комментарии пользователю??
Ответить
Подскажите как сделать ответы на комментарии?
Ответить
Давно хотел создать на своём сайте систему комментариев. А сегодня я прочитал эту статью и получилось!!! Огромное вам спасибо!!!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.