Сейчас: 10:08:24   25-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеФорма модерации комментариев
4
30

Форма модерации комментариев к темам

Данная тема является дополнением к теме Форма добавления комментариев к темам.


В данной теме мы рассмотрим PHP код, позволяющий модерировать комментарии, оставленные посетителями сайта через форму добавления комментариев к темам.


Предлагаемый PHP код для модерации комментариев следует добавить в Вашу админ панель, либо поместить в отдельный файл, доступный по паролю.


Чтобы понять о какой форме модерации комментариев к темам идет речь, обратите внимание на скриншот, приведенный ниже:


Скриншот формы модерации комментариев
Форма модерации комментариев к темам.

Для получения формы модерации комментариев, как на скриншоте выше, поместите следующий код в Вашу админ панель в самом начале, сразу после подключения к MySQL:

PHP код:
<?php
if (isset($_GET[del])) {
 
$result=mysql_query("DELETE FROM comment WHERE id='".$_GET[del]."' LIMIT 1"$link);
 
header("Location: adminka.php");
}
if (isset(
$_GET[ok])) {
 
$result mysql_query("UPDATE comment SET moderation=1
 WHERE id='"
.$_GET[ok]."' LIMIT 1"$link);
 
header("Location: adminka.php");
}
if (
$_POST[comment_user]!="") {
 
$result mysql_query("UPDATE comment SET message='".$_POST[comment_user]."'
 WHERE id='"
.$_POST[comment_id]."' LIMIT 1"$link);
 
header("Location: adminka.php");
}
?>

Данный код отвечает за изменение, показ или удаление комментариев посетителей.


В том месте, где Вы планируете выводить форму модерации комментариев к темам, поместите следующий код в Вашу админ панель:

PHP код:
<?php
echo '<div align="center">';

$result=mysql_query("SELECT * FROM comment WHERE moderation=0 ORDER BY id"$link);
$number=mysql_num_rows($result);

if (
$number>0) {
for (
$n=1$n<=$number$n++) {
    
$comments=mysql_fetch_array($result);
    echo 
'<table border="0" width="730"
    style="border: 1px solid #4874a3;" bgcolor="#e7e7e7">'
;
    echo 
'<tr align="center"><td width="200"><b>'.$comments[login].'</b></td>';
    echo 
'<td width="200">'.$comments[theme].'</td>';
    echo 
'<td width="160">'.$comments[date].'</td><td width="80"></td>';
    echo 
'<tr><td colspan="3"><form method="POST" action="adminka.php">';
    echo 
' <textarea cols="75" rows="5" name="comment_user">'.$comments[message].
    
'</textarea></td>';
    echo 
'<td colspan="4" align="center"><input type="hidden" name="comment_id"
    value='
.$comments[id].'><input type="submit" value="Изменить"></form><br><br>';
    echo 
'<a href="adminka.php?del='.$comments[id].'">Удалить</a><br><br>';
    echo 
'<a href="adminka.php?ok='.$comments[id].'">Показать</a></td></tr>';
    echo 
'</table><br>';
    }
}
else echo 
'<b>Новых комментов нет!</b><br>';
echo 
'</div>';
?>

В приведенных нами PHP кодах предполагается, что данный код будет размещен в файле adminka.php. Если Вы поместите данный код в файл с другим именем, то замените в коде adminka.php на имя Вашего файла.


Обращаем Ваше внимание на то, что в выше приведенных кодах некоторые строчки кода были разорваны и перенесены из-за своей длины. Данные строчки следует писать в одну строку. Также следует учитывать, что на каждый комментарий будет создана своя отдельная форма для модерации. Если Вы хотите модерировать по одному комментарию в порядке их добавления, то измените строчку:

Цитата:
$result=mysql_query("SELECT * FROM comment WHERE moderation=0 ORDER BY id"$link);

на такую:

Цитата:
$result=mysql_query("SELECT * FROM comment
WHERE moderation=0 ORDER BY id LIMIT 1"
$link);

где LIMIT 1 означает, что выводить следует по одному комментарию. При необходимости данное число можно изменить.


После добавления на свой сайт всех выше приведенных кодов у Вас должна получиться точно такая же форма для оставления комментариев к темам как на скриншоте в самом начале.

Дата создания: 14:30:20 30.04.2012 г.
Посещений: 7487 раз(а).

Комментарии посетителей (14 шт.):
Алексей
4
# 154
(17:06:25  18.05.2012 г.)

Спасибо! На основе Вашей формы добавления комментариев + админка удалось достаточно просто реализовать стол приёма заявок на идеи развития сайта - невероятно полезная вещь для перспективного проекта!
Ответить

Анд
-1
# 974
(19:30:42  16.07.2013 г.)

Здравствуйте! Все сделал по вашему объяснению. Выходит форма, заполняю и когда нажимаю отправить, вот что получается: "Ошибка 404. Запрашиваемая Вами страница не существует
1. Ссылка, по которой Вы перешли, неверна.
2. Вы неправильно указали путь или название файла/страницы.
3. Файл или страница были удалены со времени Вашего последнего посещения."
Подскажите, что может быть ни так? И таблицы в БД создал все перепроверил, не понимаю, как и куда отправляются данные на обработку... и что делать?
Ответить

Administrator
1
# 975
(19:49:28  16.07.2013 г.)

В теме же написано, что если Вы разместили приведенные нами коды не в файле adminka.php, то следует заменить все встречающиеся упоминания adminka.php на имя Вашего файла.
Ответить

Алексей
0
# 2295
(17:30:06  02.03.2015 г.)

Здравствуйте, форму добавления комментариев к темам сделал, работает нормально, но с формой модерации возникла проблема, так как ни разу не сталкивался с админ панелью и 2 способ, что можно поместить код adminka.php, но и тут дальше не знаю как его подключить.
Будьте добры поясните подробнее насчет 1 и 2 метода, в mysql знаю пока только как создавать базы данных, поэтому и легкая проблема кажется тяжелой.
Заранее благодарен.
Ответить

Administrator
0
# 2296
(19:32:18  02.03.2015 г.)

А что тут пояснять. Если у Вашего сайта нет админ панели (именно у сайта, а не у хостера), то копируйте приведенный код и вставляйте его в новый файл (например, adminka.php).
Ответить

Алексей
2
# 2313
(08:09:36  11.03.2015 г.)

Доброе время суток,
Долго не отвечал...
Насчет сообщения #2296 - все понятно, вопрос в другом, как вызывать и подключать adminka.php? Просьба пояснить, так как admin панели нет, если она была бы, то все понятно, а как в этом случае быть.
С уважением, Алексей.
Ответить

Administrator
0
# 2319
(20:55:55  11.03.2015 г.)

Копируйте наш код и вставляйте его в новый файл на сайте (например, adminka.php). В самом начале файла подключаетесь к БД: $link = mysql_connect("localhost", "Ваш_логин", "Ваш_пароль");
mysql_select_db("Имя_базы", $link);
Ну а дальше просто обращаетесь к созданному файлу так: site.ru/adminka.php.
Ответить

Дмитрий
0
# 3453
(16:23:14  26.09.2016 г.)

Здравствуйте.
Скажите, а можно ли в админке сделать так, чтобы комменты сразу появлялись, а админу приходило письмо о появлении новых комментариев. Затем админ заходит в админку и правит их, если надо. Пусть бы там сохранялись комменты за одну-две недели, или все к данной странице... а не как сейчас - только не прошедшие модерацию. Я понимаю, что можно отключить модерацию, но зачем тогда админка, какова её роль в этом случае? ...если модерировать придётся заходя на сервер.

Думаю, надо доработать скрипт... Если у вас уже есть готовые решения - напишите, плиз...
Ответить

Administrator
0
# 3457
(22:38:06  26.09.2016 г.)

Тогда Вам нужно отключить модерацию, а в самой форме модерации комментариев вместо SQL запроса:
$result=mysql_query("SELECT * FROM comment WHERE moderation=0 ORDER BY id", $link);
использовать:
$result=mysql_query("SELECT * FROM comment WHERE date>CURDATE()-INTERVAL 15 DAY ORDER BY id", $link);
Таким образом, в админке будут отображаться все комментарии за последние 15 дней.
Ответить

Дмитрий
0
# 3461
(10:32:15  27.09.2016 г.)

ОК! Благодарю. Сейчас проверю.

И заодно хочу спросить, может быть у вас уже есть на сайте готовый код, для админки, чтобы эта страница открывалась по логину и паролю? Я не нашёл. Если нет, может быть сделаете такую тему? Очень пригодилась бы, думаю многим.
Ответить

Administrator
0
# 3467
(23:09:44  27.09.2016 г.)

Можно не выдумывать и поставить пароль на папку с админкой при помощи .htaccess.
Ответить

Дмитрий
0
# 3475
(15:28:56  28.09.2016 г.)

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

Administrator
0
# 3477
(23:10:51  28.09.2016 г.)

Можно. В SQL запросе после "ORDER BY id" добавьте "DESC".
Чтобы пометить, добавьте в код вывода: if ($comments[moderation]==1) echo 'Проверен!';
Ответить

Дмитрий
0
# 3479
(09:33:38  29.09.2016 г.)

Спасибо! Ну вот, вырисовывается простенькая, но в то же время и с достаточным функционалом админка. Позже, думаю прикрутить к ней панельку, сверху (горизонтальную планку), в которой можно было бы переключать режимы: с модерацией комментариев до размещения на сайт, и с модерацией информации после размещения на сайт. Менять код вручную как-то неудобно. Иногда, режим с модерацией комментариев до размещения на сайт тоже нужен, если завёлся какой-то тролль... - включаем на какое-то время, пока успокоится... Плюс хочу вывести кнопку "Блокировка по IP". Ну вот в принципе и всё что надо для оперативного редактирования комментариев. Если поможете с кодом, буду только рад :)
Ответить

Закрыть
Ваше имя:
304 + 7 =
Добавить комментарий:
Ваше имя:
304 + 7 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 9

Какие темы необходимо добавлять на сайт?