Здравствуйте, у меня не получается сделать премодерацию при добавлении комментариев. То есть, если пользователь добавил коммент и пока администратор его не активирует, комментарий не будет виден всем пользователям. Вот весь скрипт модуля: main.php: Код (PHP): <?php function COMMENTS() {global $CONNECT, $Module, $Page, $Param; if ($_SESSION['USER_LOGIN_IN'] != 1 and !$_SESSION['USER_LOGIN']) { /*Форма коментариев для гостей*/ $Avatar = 0; echo '<br/>[url="#login_form"]Войти[/url] <br/><br/><img src="/resource/avatar/'.$Avatar.'.jpg" width="80" height="74" alt="Аватар" align="left" id="avatar" style="cursor:pointer;margin:0 5px 0 0" /> <form method="POST" action="/comments/add/module/'.$Page.'/id/'.$Param['id'].'"> <textarea id="message" name="text" placeholder="Текст сообщения" maxlength="990" onkeypress="return isNotMax(event)" required></textarea> <br/><input type="submit" name="enter" value="Отправить" style="margin-left:97px" /> <input type="hidden" name="user_id" value="'.$_SESSION['USER_ID'].'"> </form> <br><br>';} /*Форма коментариев для пользователей*/ else {$Avatar = (empty($_SESSION['USER_AVATAR'])) ? 0 : $_SESSION['USER_AVATAR'].'/'.$_SESSION['USER_ID']; echo '<div><br/><br/><ul id="soc"><li> <img src="/resource/avatar/'.$Avatar.'.jpg" width="80" height="74" alt="Аватар" align="left" id="avatar" style="cursor:pointer;margin:0 5px 0 0" /> <ul style="top:-48px"><li><div id="count" style="padding:5px 5px 24px 5px"> [url="/account/logout"]Выход[/url] </li></ul></li></ul> <form method="POST" action="/comments/add/module/'.$Page.'/id/'.$Param['id'].'"> <textarea id="message" name="text" placeholder="Текст сообщения" maxlength="990" onkeypress="return isNotMax(event)" required></textarea> <br/><input type="submit" name="enter" value="Отправить" style="margin-left:97px" /> <input type="hidden" name="user_id" value="'.$_SESSION['USER_ID'].'" /> </form></div><br/><br/>';} $ID = ModuleID($Page); $Param['page'] = (!$Param['page']) ? 1 : $Param['page']; $sql = "SELECT c.`id`, c.`text`, c.user_id, c.`active`, DATE_FORMAT(c.`date`, '%d.%m.%Y, %H:%i:%s') AS date, u.avatar, u.login, u.name, u.group, u.email, u.regdate FROM `comments` AS c LEFT JOIN `users` AS u ON u.id = c.user_id WHERE c.`module` = $ID AND c.`material` = '".$Param['id']."' ORDER BY c.`id` DESC"; $Result = mysqli_query($CONNECT, $sql) or die( mysqli_error($CONNECT) ); while ($Row = mysqli_fetch_assoc($Result)) { if (!$Row['active'] and $_SESSION['USER_GROUP'] != 2 and $Row['id']) $wait='<span> (Комментарий ожидает модерации)</span>'; /*Активация коментов*/ if (!$Row['active'] != $_SESSION['USER_ID'] and $Row['user_id'] OR $_SESSION['group'] == 2) $Active = ' [ [url="/comments/control/id/'.$Row['id'].'/command/active"]Активировать[/url] ]'; /*Управление коментами*/ $Admin = ''; if ($_SESSION['USER_ID'] == $Row['user_id'] OR $_SESSION['group'] == 2) $Admin = ' [ [url="#del"] ]<a href="" class="overlay" id="del">[/url] <div id="popup" style="margin-top:-37px;min-height:3em"><hr id="hr" /> <p id="logtext" style="font-size:13pt;margin:9px 0 9px 0">Предупреждение</p> <h4>Вы действительно хотите удалить?</h4> <div id="yes"><br/>[url="#1"]Нет[/url]</div></div>'; // Если есть настройка позволяющая редактировать комментарии. if ($Row['id'] == $_SESSION['COMMENTS_EDIT']) $Row['text'] = '<form method="POST" action="/comments/control"> <textarea id="comedit" name="text" placeholder="Текст сообщения" maxlength="990" onkeypress="return isNotMax(event)" required>'.$Row['text'].'</textarea> <br/><input type="submit" name="save" value="Сохранить" /> <input type="submit" name="cancel" value="Отменить" /></form>'; $Avatar = (empty($Row['avatar'])) ? 0 : $Row['avatar'].'/'.$Row['user_id']; $Info = (empty($Row['name'])) ? '<b id="name">Аноним</b>' : ' <! --Информация о пользователе-- > <span id="spoiler" tabindex="1"><a>'.$Row['name'].'</a> <div class="spoiler"> <b>Группа:</b> ('.UserGroup($Row['group']).') <br/><b>Имя:</b> '.$Row['name'].' <br/><b>E-mail:</b> '.HideEmail($Row['email']).' <br/><b>Дата регистрации:</b> '.$Row['regdate'].'</p> <a href="" style="position:relative;top:-83px;left:293px" id="close"></a> </div></span>'; echo '<img src="/resource/avatar/'.$Avatar.'.jpg" width="60" height="60" alt="Аватар" align="left" id="avatar" /> <div id="comments" style="margin-left:70px">'.$Info.$wait.' <span style="float:right">'.$Row['date'].$Admin.$Active.'</span><br/>'.$Row['text'].'</div><br/>'; }} ?> add.php: Код (PHP): <?php if ($_SESSION['USER_GROUP'] == 2) $Active = 1; else $Active = 0; if ($_POST['enter'] and $_POST['text']) { $_POST['text'] = FormChars($_POST['text']); $ID = ModuleID($Param['module']); if ($ID == 1) $Table = 'publ'; else if ($ID == 2) $Table = 'loads'; else if ($ID == 3) $Table = 'addons'; $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, 'SELECT `id` FROM `'.$Table.'` WHERE `id` = '.$Param['id'])); if (!$Row['id']) MessageSend(1, 'Материал не найден.', '/'.$Param['module']); $sql = "INSERT INTO `comments` SET `material` = ".$Param['id'].", `module` = $ID, `added` = '".$_SESSION[USER_LOGIN]."', `text` = '".$_POST['text']."', `date` = NOW(), `user_id` = '".(int)$_POST['user_id']."', `active` = $Active"; mysqli_query($CONNECT, $sql) or die( mysqli_error($CONNECT) ); MessageSend(3, 'Комментарий добавлен.', '/'.$Param['module'].'/material/id/'.$Param['id']); } ?> control.php: Код (PHP): <?php if ($Param['action'] == 'delete') { mysqli_query($CONNECT, "DELETE FROM `comments` WHERE `id` = $Param[id]"); MessageSend(3, 'Комментарий удален.'); } else if ($Param['action'] == 'edit') { $_SESSION['COMMENTS_EDIT'] = $Param['id']; exit(header('location: '.$_SERVER['HTTP_REFERER'])); } else if ($_POST['save']) { mysqli_query($CONNECT, "UPDATE `comments` SET `text` = '$_POST[text]' WHERE `id` = $_SESSION[COMMENTS_EDIT]"); unset($_SESSION['COMMENTS_EDIT']); MessageSend(3, 'Коментарий отредактирован.'); } else if ($_POST['cancel']) { unset($_SESSION['COMMENTS_EDIT']); MessageSend(3, 'Редактирование отмененно.'); } else if ($Param['command'] == 'active') { mysqli_query($CONNECT, "UPDATE `comments` SET `active` = 1 WHERE `id` = $Param[id]"); MessageSend(3, 'Комментарий активирован', '/addons/material/id/'.$Param['id']); } ?> База данных phpmyadmin: Код (Text): id - int material - int module - int added - varchar text - mediumtext date - datetime user_id - int active - int
у меня не получается выполнить это силой мысли. будь добр описать словами в чём загвоздка, что происходит. ты вывод ошибок включал? остояние переменных контролировыал? phpfaq.ru/debug Добавлено спустя 2 минуты 31 секунду: используй [code=php] вместо [code] чтобы твоя куча букв хотябы была синтаксически подсвечена.
В принципе активация коментов проходит, только она проходит сразу для всех комментариев. Вот сижу ломаю голову какое условие прописать, чтобы проходила активация только для конкретного комментария конкретного пользователя.
В таких случаях выручает var_dump($_POST) — смотришь что пришло и понимаешь как обратиться к нуным данным. "конкретный", это когда указан id этого коментария/пользователя, правильно? иначе он будет неконкретный. вот и указывай где-то свою конкретику. а потом используй её. — К.О.