Создать ответ 
Построение дерева иерархии или дерева комментариев
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #191
RE: Построение дерева иерархии или дерева комментариев
Читайте предыдущее сообщение внимательнее... Big Grin
Удаляем из первого кода, а добавляем после кода формы. У Вас - удаляем из первого файла, а вставляем уже во второй.

Или у Вас опять куча редиректов, которые очищают переменные сессий... Big Grin
04.05.2015 22:51:01
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #192
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте, мой косяк надо внимательней читать Happy.

Если все поля, кроме суммы заполнить правильно, то выдаваться будет "Неверный проверочный код" и данные из формы будут обнуляться (само сообщение, логин и сумма).

В строчку:
Код:
echo '<textarea cols="68" rows="5" name="user_text" required placeholder="Введите здесь текст"></textarea>';

добавил атрибут placeholder и полагаю необходимо также прописать между textarea '.$_SESSION[comment_user_text].', но это только догадка и если так прописывать, то в 1 код надо будет добавлять, но пробовал добавлять так:
Код:
$_SESSION[comment_user_text]=$_POST[user_text];

но данные все равно обнуляются. Не подскажите в чем проблема, если вообще в этом направлении нужно двигаться.
04.05.2015 23:54:02
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #193
RE: Построение дерева иерархии или дерева комментариев
Вы на верном пути.
А в какое именно место кода Вы добавляли строчку:
PHP код:
$_SESSION[comment_user_text]=$_POST[user_text]; 

Надо где-нибудь между:
PHP код:
if (session_id()==''session_start(); 

и
PHP код:
if (isset($_POST["contr_cod"])){    //отправлен комментарий 

Далее между textarea вставляете '.$_SESSION[comment_user_text].'

Ну и в конце формы не забываем очистить переменную, чтобы при переходе по страничкам в форме не маячил текст комментария: $_SESSION[comment_user_text]='';
05.05.2015 00:08:42
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #194
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте, работает, но когда кликаю на кнопку отправить, данные не обнуляются из текста, а остаются. Форма обнуляется только после перезагрузки.

Как вставлял код:

1. Код:
Код:
$mess_url=mysqli_real_escape_string($db,basename($_SERVER['SCRIPT_FILENAME']));

if (isset($_POST["contr_cod"])){    //отправлен комментарий
    $user_text=htmlspecialchars($_POST["user_text"]);
    $mess_login=htmlspecialchars($_POST["mess_login"]);
    $_SESSION[comment_user_text]=$_POST[user_text];
    $_SESSION[comment_mess_login]=$_POST[mess_login];

if (md5($_POST["contr_cod"])==$_POST["prov_summa"]){    //код правильный
Знаю, что вы писали что нужно вставлять код между:
PHP код:
if (session_id()==''session_start(); 

и
PHP код:
if (isset($_POST["contr_cod"])){    //отправлен комментарий 
но, в этом случае данные при вводе неправильной суммы сразу обнуляются.

2. Далее между textarea код выглядит так:
Код:
echo '<textarea cols="68" rows="5" name="user_text" placeholder="Введите здесь текст">'.$_SESSION[comment_user_text].'</textarea>';

3. И в конце формы добавляю, чтобы обнулить
Код:
$_SESSION[comment_user_text]='';
$_SESSION[comment_mess_login]='';
При таком раскладе, если проверочный код введен неверно, то поле для ввода суммы обнуляется, а поле для текста и логина нет, что правильно. Если все данные заполнены верно, то поле для ввода суммы обнуляется, а данные теста и логина сохраняются и обнуляются только, если обновить страничку.

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

Заранее благодарен.
06.05.2015 09:38:12
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #195
RE: Построение дерева иерархии или дерева комментариев
Ну так обнулите их, добавив:
PHP код:
$_SESSION[comment_user_text]=''
$_SESSION[comment_mess_login]=''

после:

PHP код:
$_SESSION["send"]="Комментарий принят!"
06.05.2015 20:57:20
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #196
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте, спасибо - работает Ok!!!
У меня к вам еще несколько вопросов, раньше я думал, что смогу их сам решить, но не получается...

1. В старой форме у меня было реализовано ограничение ввода логина, т.е. минимальная длина логина - 3 символа.
Реализовывал таким образом:
Код:
if (isset($_POST[mess_login]) and mb_strlen($_POST[mess_login],'UTF-8')<=2) $_SESSION[send] = "Имя менее 3 символов!";
Если код, как есть добавлять в 1 код, то не работает или оформлять при помощи оператора:
else { ... }

2. Когда отрицательный комментарий, то появляется ссылка "Показать/скрыть", код я не буду добавлять, так как имеется у вас на сайте.
У меня немного другой код:
Код:
$(document).ready(function(){
    $(".sp_link").click(function(){
if ($(this).text()=='Показать') $(this).text('Скрыть');
    else $(this).text('Показать');        
    $(this).parent().children(".comm_text").toggle("normal");
return false;    
});

В этом случае, если отрицательный комментарий, то ссылка "Показать", а после клика содержимое показывается и наверху вместо "Показать" ссылка "Скрыть".

Я хотел бы, если, конечно, несложно реализовать таким образом, чтобы ссылка "Скрыть" была не вверху, а внизу сообщения, что удобно например если большое сообщение кликать на ссылку сразу после прочтения.
В принципе это не так важно, интересно как реализовать используя данный код.

Спасибо Yes и заранее благодарен.
06.05.2015 23:29:50
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #197
RE: Построение дерева иерархии или дерева комментариев
1. Делайте по аналогии с имеющимся кодом...
PHP код:
if (isset($_POST[mess_login]) and mb_strlen($_POST[mess_login],'UTF-8')<=2) {
$_SESSION[send] = "Имя менее 3 символов!";
header("Location: $mess_url#last"); exit;
}
else {
Тут кодкоторый будет выполняться если логин 3 и более символа


2. Тут надо не JS код менять, а HTML код вывода сообщений.
А если быть точнее, то
Код:
if ($sum<0) echo '<u class="sp_link">Показать/скрыть</u><div class="comm_text">';
else echo '<div style="word-wrap:break-word;">';
echo str_replace("<br />","<br>",nl2br($tag[$up][$i][1])).'</div>';

нужно заменить на:
Код:
if ($sum<0) echo '<div class="comm_text">';
else echo '<div style="word-wrap:break-word;">';
echo str_replace("<br />","<br>",nl2br($tag[$up][$i][1])).'</div>';
if ($sum<0) echo '<u class="sp_link">Показать/скрыть</u>';
07.05.2015 22:24:59
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #198
RE: Построение дерева иерархии или дерева комментариев
Доброе время суток, спасибо Ok.

1. Разобрался насчет минимальной длины логина. В данный момент при вводе 2 символов отображается "Имя менее 3 символов!" и сообщение исчезнет, если логин 3 или более символов, т.е. все нормально.

Вопрос: если, например, попробовать обновить страницу вручную, то сообщение остается, а как сделать чтобы при обновлении страницы сообщение пропадало.
Пробовал добавлять $_SESSION[mess_login]='';, но не работает, при обновлении страницы все данные сохраняются.
P.S.: Если уйти со страницы и снова зайти, все нормально.

2. С 2 пунктом все ясно, спасибо Ok

3. Есть вопрос насчет частой отправки комментариев:
Есть код:
Код:
$result = mysql_query("SELECT id FROM comment WHERE login='".$_SESSION["comment_mess_login"]."' and date>'".(time()-120)."'", $link);
    if (mysql_num_rows($result)>0){
$_SESSION["send"] = "Вы часто отправляете комментарии";
header("Location: $_SESSION[mess_url]#last");
exit;
}
Вроде все верно, но не работает, может быть что-то не правильно с кодом ?

Спасибо и благодарен за поддержку.
07.05.2015 23:42:33
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #199
RE: Построение дерева иерархии или дерева комментариев
1. Вы говорите про сообщение, а пытаетесь обнулить переменную с логином Smile

Вообще то, сразу после вывода сообщения оно и так обнуляется:
PHP код:
if (isset($_SESSION["send"]) and $_SESSION["send"]!="") {    //вывод сообщения
    
echo '<script type="text/javascript">alert("'.$_SESSION["send"].'");</script>';
    
$_SESSION["send"]="";


3. В скрипте везде мы используем MySQLi, а Вы приводите код MySQL.
Вот такой код у меня, например, работает:
PHP код:
$result mysqli_query($db,"SELECT id FROM comment WHERE login='".$_SESSION["comment_mess_login"]."' and date>'".(time()-120)."'");
if (
mysqli_num_rows($result)>0){
    
$_SESSION["send"] = "Вы часто отправляете комментарии";
    
header("Location: $_SESSION[mess_url]#last");
    exit;


И проконтролируйте, чтобы в переменной $_SESSION["comment_mess_login"] было значение логина.
08.05.2015 00:02:16
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #200
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте,
Поздравляю вас с праздником !!! Drink Желаю всего самого наилучшего!
[Изображение: tid_135_ribbon.png]

Насчет пункта 1 и 3 предыдущего сообщения все понятно. Ok

1. Сегодня попробовал добавить код, чтобы пользователи не могли оставлять комментарии от имени "Администратор", но не работает, хотя вроде все правильно.

В 1 код добавлял строчку:
Код:
else if ($_POST["mess_login"]=="Администратор" and $_POST[pass]!='admin') $_SESSION["send"] = "Неверный пароль!";

В форму добавлял код таким образом:
Код:
echo 'Имя: <input type="text" name="mess_login" maxlength="20" value="'.$_SESSION[comment_mess_login].'" onKeyUp="enter_pass();"></div>';
echo '<div id="admin" style="display: block; display:none; margin: 2px 0px 1px 15px;"><b>Пароль: </b><input type="password" name="pass" maxlength="20" value=""></div>';

Ну и js код:
Код:
function enter_pass() {
    if (document.message.mess_login.value=="Администратор")document.getElementById('admin').style.display="block";
else document.getElementById('admin').style.display="none";
}
При таком раскладе, при вводе "Администратор" поле для ввода пароля не появляется, но если попробовать отправить сообщение, то появится сообщение
"Неверный пароль!", т.е код в 1 коде работает, а во 2, наверное нет.

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

2. Еще один интересный момент...
При наведении курсора мыши на оценку у вас появляется подсказка title с таким сообщением : Плюсов -1, минусов - 0, как на скрине ниже:
[Изображение: tid_135_ocenka.png]
Пробовал реализовать, но не получается, но для пользователей удобно.

3. У меня на странице info-1.html в шапке:
<?php $theme_id=1; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"; ?>

и в таблице comment на скрине:
[Изображение: tid_135_theme_id.png]
где, theme_id=1, а я хотел чтобы theme_id=info-1

В структуре таблицы comment/theme_id пробовал менять тип поля theme_id на varchar, но не работает.
[Изображение: tid_135_theme_id_comment.png]

В шапке, конечно, также пробовал менять:
<?php $theme_id=info-1; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"; ?>

Реализовать хотел бы, так как, если у меня, например, несколько страниц и они разные, то не сразу будет понятно с какой страницы пришел комментарий, а если будет info-1 или read-1, то будет легче.

С уважением и еще раз с праздником!
09.05.2015 12:14:00
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru