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

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #21
RE: Построение дерева иерархии или дерева комментариев
LIMIT ".($number_theme*5-5).",5 нужен для разбивки страничек по 5 комментариев.
Попробуйте как я писал ранее заменить $number_theme на $comment_list.

У Вас вообще есть переменные $number_theme или $comment_list до SQL запроса?
20.07.2012 23:23:33
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #22
RE: Построение дерева иерархии или дерева комментариев
(20.07.2012 23:23:33)Admin писал(а):  У Вас вообще есть переменные $number_theme или $comment_list до SQL запроса?

Ого! Нет таких! Scratch А где их взять можно?
20.07.2012 23:29:42
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #23
RE: Построение дерева иерархии или дерева комментариев
Одна (какую выберите, такая и будет) из этих переменных нужна только в том случае, если необходима разбивка на странички - http://usefulscript.ru/forum/showthread....438#pid438

Если Вы не планируете разбивать комментарии на странички, то можно SQL запрос из 12 сообщения данной темы не изменять!
20.07.2012 23:39:11
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #24
RE: Построение дерева иерархии или дерева комментариев
(20.07.2012 23:39:11)Admin писал(а):  Одна (какую выберите, такая и будет) из этих переменных нужна только в том случае, если необходима разбивка на странички - http://usefulscript.ru/forum/showthread....438#pid438

Если Вы не планируете разбивать комментарии на странички, то можно SQL запрос из 12 сообщения данной темы не изменять!

Ох блин, извиняюсь! А я во обще убрал код разбивки на странички из скрипта, думал Вы сделали без него иерархию дерева. А почему так подумал? потому что в этой строчке:


Цитата:Для этого изменяем наш MySQL запрос:

Код:
$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 ORDER BY id", $link);
$number = mysql_num_rows($result);

нет ниодного намёка на то что используется изначально скрипт разбивки. Теперь всё ясно! Спасибо!!!!! Smile
20.07.2012 23:58:13
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #25
RE: Построение дерева иерархии или дерева комментариев
Доброе утро! Извиняюсь за глупый вопрос, скажите пожалуйста по какому алгоритму расставляются строчки $tags[$parent][$i][0], $tags[$parent][$i][1] и.тд...? Вот у меня получилось вот так:

PHP код:
function parents($parent=0,$left=0) {
 global 
$tags;

 for (
$i=0;$i<=count($tags[$parent])-1;$i++) {
 if (
$tags[$parent][$i][2]=='Incognito'$tags[$parent][$i][2]='<font color="#cc1111">Incognito</font>';
      echo 
'<div align="right" style="margin:0px 0px 0px '.$left.'px;">';

 echo 
'<br><table border="0" width="95%" style="border: 1px solid #4874a3;" bgcolor="#fffabc"><tr>';
 echo 
'<td align="left" style="padding:5px 5px 5px 5px;">';
 echo 
'<div id="m'.$comments[id].'"></div><b>'.$tags[$parent][$i][2].'</b></td>';
 echo 
'<td width="140">';
 echo 
'<span style="font-size:12px;">('.$tags[$parent][$i][3].')</span></td>';
 echo 
'<td width="20" >';
 echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#m'.$comments[id].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$comments[id].'">';
 echo 
'<input type="hidden" name="ocenka" value="1">';
 echo 
'<input type="image" src="comm_up.gif" title="Хороший комментарий" align="middle">';
 echo 
'</form></td>';
 echo 
'<td width="5"><b>'.($ocenka_com[0]-$ocenka_com[1]).'</b></td>';
 echo 
'<td width="20">';
 echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#m'.$comments[id].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$comments[id].'">';
 echo 
'<input type="hidden" name="ocenka" value="0">';
 echo 
'<input type="image" src="comm_down.gif" title="Плохой комментарий" align="middle">';
 echo 
'</form></td></tr></table>';
 echo 
'<table border="0" width="95%" style="border: 1px solid #eeeeee;"bgcolor="#f0fff0">';
echo 
'<tr><td width="100"><img src="'.$ava_user[$comments[login]].'">';
echo 
'<td>';
if ((
$ocenka_com[0]-$ocenka_com[1])<0)
echo 
'<div><a href="javscript://" class="spoiler_link">Показать / скрыть плохой комментарий</a><div class="spoiler_body">'.wordwrap(nl2br($tags[$parent][$i][1]), 70"\n"1).'</div></div>';
else echo 
wordwrap(nl2br($tags[$parent][$i][1]), 70"\n"1);
 echo 
'</td></tr></table>';
echo 
'<div align="center" style="width:100px; border: 1px solid #000;"><span class="size14" onClick="comm_on(0,'.$tags[$parent][$i][0].','.$tags[$parent][$i][6].')">Ответить</span></div>';
     if (isset(
$tags$tags[$parent][$i][0] ])) parents($tags[$parent][$i][0],20);
     echo 
'</div>';
 }
 } 

при таком раскладе выводятся комментарии , имя пользователя и дата комментария - но не могу понять как добиться вывода аваторы и что бы заработала оценка комментария, остальное вроде всё работает...
21.07.2012 09:59:04
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #26
RE: Построение дерева иерархии или дерева комментариев
Что содержится в переменных $tags[$parent][$i][0], $tags[$parent][$i][1] можно посмотреть в строчке

Код:
while ($comments=mysql_fetch_assoc($result)) $tags[(int)$comments['parent_id']][]=array((int)$comments['id'], $comments['message'], $comments['login'], $comments['date'], $comments['plus'], $comments['minus'], $comments['first_parent']);

Именно в данной строке мы извлекаем все полученные данные из MySQL запроса и запихиваем в массив.
Как видно переменной $tags[$parent][$i][0] соответствует $comments['id'], $tags[$parent][$i][1] - $comments['message'] и т.д. по порядку.
Аватарки вроде у Вас хранятся в другом массиве, так вот его и подставляйте как ранее (главное произвести запрос и запись в массив аватарок до вывода комментариев).

По поводу оценок, я просто у себя уже их переделал и они у меня дополнительно хранятся и в комментариях.
В Вашем случае нужно будет внутри функции parents() внутри цикла for ($i=0;$i<=count($tags[$parent])-1;$i++) { сразу в его начале добавляем (как и было ранее):

Код:
$result_minus = mysql_query("SELECT sum(ocenka=1), sum(ocenka=0) FROM ocenka_comment WHERE comment_id='".$comments[id]."' LIMIT 1", $link);
$ocenka_com=mysql_fetch_array($result_minus);

Далее при выводе комментариев используем переменные $ocenka_com[0] и $ocenka_com[1].
21.07.2012 13:11:17
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #27
RE: Построение дерева иерархии или дерева комментариев
Ок спасибочки, теперь всё понятно, сейчас начну шаманить!!!

Скажите а $comments['plus'], $comments['minus'], таких столбцов нету в базе или это вообще к этому не относиться? ))
(Последний раз сообщение было отредактировано 21.07.2012 в 14:45:50, отредактировал пользователь Incognito.)
21.07.2012 14:31:43
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #28
RE: Построение дерева иерархии или дерева комментариев
Это у меня они есть Blush , у себя убирайте :
Код:
while ($comments=mysql_fetch_assoc($result)) $tags[(int)$comments['parent_id']][]=array((int)$comments['id'], $comments['message'], $comments['login'], $comments['date'], $comments['first_parent']);

Выше уже написал, как получить оценки.

Соответственно и в коде кнопки $tags[$parent][$i][6] надо будет изменить на $tags[$parent][$i][4]:

Код:
<div align="center" style="width:100px; border: 1px solid #000;"><span class="size14" onClick="comm_on(0,'.$tags[$parent][$i][0].','.$tags[$parent][$i][4].')">Ответить</span></div>
21.07.2012 14:50:20
Найти все сообщения Цитировать это сообщение
Incognito Не на форуме
Лейтенант
*

Сообщений: 138
У нас с: Nov 2011
Сообщение: #29
RE: Построение дерева иерархии или дерева комментариев
Ну вот заработала оценка, вывод комментариев, вывод логина, добавляются новый комментарии (но только пока в базу - на странице коммент так и не появляется, как родительский - так и дочерний).

Осталось вывод аваторов строчка:

PHP код:
<img src="'.$ava_user[$comments[login]].'"
- не срабатывает

PHP код:
<img src="'.$ava_user[$tags[$parent][$i][2]].'"
- не срабатывает

есть ли какие-то ещё варианты? (аваторы обрабатываются до кода с function parents)

И осталось сделать чтобы новые комменты выводились, а не оставались в базе - пока показывает только старые и всё - новые не появляются, причём даже недавно сделанные сидят в базе и тоже не отображаются... Blush


P.S.... Модерация вся убрана!
(Последний раз сообщение было отредактировано 21.07.2012 в 15:04:52, отредактировал пользователь Incognito.)
21.07.2012 15:03:23
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #30
RE: Построение дерева иерархии или дерева комментариев
Посмотрите, как в базу пишутся комментарии (какие значения в полях).

Посмотрите, чтобы заполнение массива $ava_user[] происходило до использования функции parents().

Выводить аватары нужно так:
Код:
<img src="'.$ava_user[$tags[$parent][$i][2]].'">
21.07.2012 15:14:56
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru