Создать ответ 
Построение дерева иерархии или дерева комментариев
Автор Сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #271
RE: Построение дерева иерархии или дерева комментариев
(26.05.2015 22:19:56)Admin писал(а):  Про Вас не забыл, просто пока коряво выходит и времени на поиск недочетов нет.
Постараюсь сделать позже.

Спасибо Yes, буду ожидать.
26.05.2015 23:04:33
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #272
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте, пока ожидал вашего решения по реализации комментариев, проверил как работает скрипт на других страницах и вот такой момент...

1. У меня, если вы помните все статичные html странички, и мы рассматривали на примере странички info-1.html и скрипт работает отлично

Путь такой:
Код:
http://autocad-problem.net/read/info-1.html

В самой страничке info-1.html в самом верху у меня код:
Код:
<?php $theme_id="1"; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"; ?>

а там где планируется вывод комментариев, код:
Код:
<?php include $_SERVER['DOCUMENT_ROOT']."/php/comment_db.php"; ?>

и как повторяюсь все работает прекрасно, но если пытаюсь добавлять для страницы, например, info-2.html или info-3.html не забывая изменить theme_id в коде с 1 на 2:
Код:
<?php $theme_id="2"; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"; ?>
, то выдается такая вот ошибка:

Цитата:Cannot send session cache limiter - headers already sent

где line 3 в файле comment.php:
PHP код:
if (session_id()==''session_start(); 

Путь для страницы info-2.html такой же, как и для страницы info-1.html
Код:
http://autocad-problem.net/read/info-2.html

Несколько раз проверял, все верно, но не работает, думаю что надо исходить от info-2.html:1 в коде ошибке, почему-то если $theme_id="1"; для 1 страницы нормально, а для других с id 2, 3 и т.д. не работает.

Как решить проблему не знаю пока Scratch, ведь даже не мог подумать, что скрипт не будет работать для других страниц.

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

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #273
RE: Построение дерева иерархии или дерева комментариев
Эта ошибка означает что до строчки:
PHP код:
if (session_id()==''session_start(); 
что-то выводится на экран (какой-либо тег или даже пробел).

Ищите что выводится до:
PHP код:
<?php $theme_id="1"; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"?>
29.05.2015 21:45:51
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #274
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте, в том то и дело, что ничего не выводится и строчка:
PHP код:
<?php $theme_id="1"; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"?>

находится в самом верху
Проверял в таких редакторах как Notepad++, phpDesigner, Dreamweaver.

Весь скрин ошибки:
   

Пока разбираюсь, но не могу разобраться...


Кстати, только проверил вот какой момент.
Если удалить коды со страницы info-1.html и вставить их для страницы info-2.html, то выдается такая же ошибка...
У меня 5 страниц и я для каждой из них пробовал добавлять данный код и нет результата, а для info-1.html все работает...
(Последний раз сообщение было отредактировано 29.05.2015 в 23:08:19, отредактировал пользователь ale10ey.)
29.05.2015 22:19:34
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #275
RE: Построение дерева иерархии или дерева комментариев
Еще раз здравствуйте,
Проверил для директории:
_http://autocad-problem.net/read/info-1.html
где, код:
Код:
<?php $theme_id="1"; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"; ?>

работает прекрасно,

если, например, данный код добавить для страницы:
_http://autocad-problem.net/about.html
где, код:
Код:
<?php $theme_id="2"; include $_SERVER['DOCUMENT_ROOT']."/php/comment.php"; ?>

то все нормально, в базу попадает значения theme_id="1" и theme_id="2" и вывод комментариев на соответствующих страницах,

но если пробовать добавлять для директории:
_http://autocad-problem.net/read/info-2.html (во вложенной папке read имеется 5 файлов info-1.html...info-5.html),
то выдается ошибка описанная в предыдущем сообщении, может быть в скрипте надо указать полный адрес или чтобы файлы нахожящиеся во вложенных папках читались?

Заранее благодарен.

Разобрался, просьба извинить Blush за то, что отвлекал по пустякам.

С нетерпением буду ожидать вашего решения по поводу ссылки "Еще комментарии".

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

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

Все изменения описать непросто, тем более Вы уже не раз вносили изменения в первоначальный код.
Поэтому просьба - скиньте сюда Ваш код вывода комментариев.
Начинается он с function parents($up=0, $left=0) { и заканчивается echo parents().'</div><br>'; }.
30.05.2015 23:02:57
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

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

PHP код:
<?php
function parents($up=0$left=0) {    
global 
$tag,$mess_url

for (
$i=0$i<=count($tag[$up])-1$i++) {
    
if (
$tag[$up][$i][2]=='Админ'$tag[$up][$i][2]='<font color="#c00">Админ</font>';
if (
$tag[$up][$i][6]==0$tag[$up][$i][6]=$tag[$up][$i][0];
    
$sum=$tag[$up][$i][4]-$tag[$up][$i][5];

if (
$up==0) echo '<div style="padding:5px 10px 0;">';
    else {
if (
count($tag[$up])-1!=$i)
    echo 
'<div class="arrow" style="padding:5px 0 0 '.($left-2).'px;">';
else echo 
'<div class="arrow_2" style="padding:5px 0 0 '.$left.'px;">';
}
    echo 
'<div class="comm_head" id="m'.$tag[$up][$i][0].'">';
echo 
'<div style="float:left;"><b>'.$tag[$up][$i][2].'</b></div>';
    
    echo 
'<div class="comm_minus" title="Плохой комментарий"></div>';
echo 
'<div style="float:right; width:30px; margin-top: 1px; cursor: default;" id="rating_comm'.$tag[$up][$i][0].'">'
    echo 
'<b>'.$sum.'</b></div><div class="comm_plus" title="Хороший комментарий"></div>';
echo 
'<a style="float:right; width:60px; color:#525252;" href="'.$mess_url.'#m';
echo 
$tag[$up][$i][0].'"># '.$tag[$up][$i][0].'</a>';
echo 
'<div style="float:right; width:140px; white-space:pre;">';
    echo 
'('.date("H:i:s  d.m.Y"$tag[$up][$i][3]).' г.)</div>';
echo 
'<div style="clear:both;"></div></div>';
    echo 
'<div class="comm_body">';

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>';

echo 
'<div class="open_hint" title="Ответить на сообщение" onClick="comm_on('.$tag[$up][$i][0].',
 '
.$tag[$up][$i][6].')">Ответить</div><div style="clear:both;"></div></div>';

 if (isset(
$tag$tag[$up][$i][0] ])) parents($tag[$up][$i][0],20);
 echo 
'</div>';
}
}
    
//вывод IP адреса непосредственно с комментариями на сайте
$res=mysqli_query($db,"SELECT * FROM comment WHERE theme_id='".$theme_id."' and moderation=1 ORDER BY id");
$number=mysqli_num_rows($res);

/**
if (isset($_POST["all_comm"])) $number="";
else $number="LIMIT 2";

$res=mysqli_query($db,"SELECT * FROM comment WHERE theme_id='".$theme_id."' and moderation=1 ORDER BY id ".$number."");
$number=mysqli_num_rows($res);

echo '<form method="POST" action="'.$mess_url.'" name="view_comment">';
echo '<input id="comments" type="submit" name="all_comm" value="Еще комментарии">
       </form>';
 */

if ($number>0) {
    echo 
'<div style="background:#fff; width:800px;">';
    echo 
'<b id="comments">Последние комментарии пасетителей</b><br>'// function col_pages_#comments
while ($com=mysqli_fetch_assoc($res))
    
$tag[(int)$com["parent_id"]][] = array((int)$com["id"], $com["message"], $com["login"], $com["date"], $com["plus"], $com["minus"], $com["first_parent"]);
//$com["ip"]_echo 'ip - '.$tag[$up][$i][7].'';
echo parents().'</div><br>';
}
?>

С уважением Yes, Алексей
31.05.2015 00:53:21
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #278
RE: Построение дерева иерархии или дерева комментариев
Теперь данный код выглядит так:
PHP код:
<?php
function parents($up=0$left=0) {
global 
$tag,$mess_url,$this_comm,$level,$mass;

for (
$i=0$i<=count($tag[$up])-1$i++) {

if (
$tag[$up][$i][2]=='Админ'$tag[$up][$i][2]='<font color="#c00">Админ</font>';
if (
$tag[$up][$i][6]==0$tag[$up][$i][6]=$tag[$up][$i][0];

$sum=$tag[$up][$i][4]-$tag[$up][$i][5];

if (
$up!=and count($tag[$up])-1!=$i$mass[$level]=1;
else 
$mass[$level]=0;

if (
$this_comm==10) {
    for (
$k=0$k<$level$k++) echo '</div>';
    echo 
'<div class="sp_comm_links">Показать/скрыть остальные комментарии</div><div class="sp_comm_body"><div>';
    for (
$k=1$k<$level$k++) {
        if (
$mass[$k]==1) echo '<div style="border-left:2px solid #000;padding:5px 0 0 '.($left-2).'px;">';
        else echo 
'<div style="padding:5px 0 0 '.$left.'px;">';
    }
}
if (isset(
$tag$tag[$up][$i][0] ])) $level++;
$this_comm++;

if (
$up==0) echo '<div style="padding:5px 10px 0;">';
    else {
if (
count($tag[$up])-1!=$i)
    echo 
'<div class="arrow" style="padding:5px 0 0 '.($left-2).'px;">';
else echo 
'<div class="arrow_2" style="padding:5px 0 0 '.$left.'px;">';
}
    echo 
'<div class="comm_head" id="m'.$tag[$up][$i][0].'">';
echo 
'<div style="float:left;"><b>'.$tag[$up][$i][2].'</b></div>';

    echo 
'<div class="comm_minus" title="Плохой комментарий"></div>';
echo 
'<div style="float:right; width:30px; margin-top: 1px; cursor: default;" id="rating_comm'.$tag[$up][$i][0].'">';
    echo 
'<b>'.$sum.'</b></div><div class="comm_plus" title="Хороший комментарий"></div>';
echo 
'<a style="float:right; width:60px; color:#525252;" href="'.$mess_url.'#m';
echo 
$tag[$up][$i][0].'"># '.$tag[$up][$i][0].'</a>';
echo 
'<div style="float:right; width:140px; white-space:pre;">';
    echo 
'('.date("H:i:s  d.m.Y"$tag[$up][$i][3]).' г.)</div>';
echo 
'<div style="clear:both;"></div></div>';
    echo 
'<div class="comm_body">';

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>';

echo 
'<div class="open_hint" title="Ответить на сообщение" onClick="comm_on('.$tag[$up][$i][0].',
 '
.$tag[$up][$i][6].')">Ответить</div><div style="clear:both;"></div></div>';

 if (isset(
$tag$tag[$up][$i][0] ])) parents($tag[$up][$i][0],20);
 echo 
'</div>';
}
$level--;
unset(
$mass);
}
    
//вывод IP адреса непосредственно с комментариями на сайте
$res=mysqli_query($db,"SELECT * FROM comment WHERE theme_id='".$theme_id."' and moderation=1 ORDER BY id");
$number=mysqli_num_rows($res);

/**
if (isset($_POST["all_comm"])) $number="";
else $number="LIMIT 2";

$res=mysqli_query($db,"SELECT * FROM comment WHERE theme_id='".$theme_id."' and moderation=1 ORDER BY id ".$number."");
$number=mysqli_num_rows($res);

echo '<form method="POST" action="'.$mess_url.'" name="view_comment">';
echo '<input id="comments" type="submit" name="all_comm" value="Еще комментарии">
       </form>';
 */

if ($number>0) {
    echo 
'<div style="border:1px solid #000000;background:#fff; width:800px;">';
    echo 
'<b id="comments">Последние комментарии пасетителей</b><br>'// function col_pages_#comments
while ($com=mysqli_fetch_assoc($res))
    
$tag[(int)$com["parent_id"]][] = array((int)$com["id"], $com["message"], $com["login"], $com["date"], $com["plus"], $com["minus"], $com["first_parent"]);
//$com["ip"]_echo 'ip - '.$tag[$up][$i][7].'';
$this_comm=0;$level=0;$c_div=0;
echo 
parents().'</div><br>';
 if (
$number>10) echo '</div>';
}
?>

В строчках if ($this_comm==10) { и if ($number>10) echo '</div>'; число 10 - это количество отображаемых комментариев. Все последующие будут скрыты.

Так же необходимо добавить стили:
Код:
.sp_comm_body { display:none; }
.sp_comm_links { cursor:pointer; font-weight:bold; text-decoration:underline; }

И JavaScript код:
Код:
$('.sp_comm_links').click(function(){$('.sp_comm_body').slideToggle(1000);});​
31.05.2015 20:13:51
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

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

1. В строчках:
if ($this_comm==2)
if ($number>2)

число комментариев сделал равным 2 для проверки, и ссылка:
Показать/скрыть остальные комментарии появилась, но она не активна, хотя js и стили прописаны Scratch. Располагается ссылка над формой и выделяется курсором как ссылка на 800px, на ширину контейнера div.

2. И если так вставлять, то на странице, где форма обрезается footer и ссылка "Наверх" съезжает вниз, как на скрине:
[Изображение: tid_135_problems.png]

Пока вот такой расклад, буду разбираться, но в данный момент не работает.
01.06.2015 00:28:00
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #280
RE: Построение дерева иерархии или дерева комментариев
Посмотрите через исходный код, есть ли там блок <div class="sp_comm_body"> внутри которого должны быть все скрытые комментарии. Если блок есть, то проблема в JavaScript коде.
Хотя там всего одна строчка и "ломаться" там нечему. Scratch
01.06.2015 00:52:24
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru