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

Сообщений: 55
У нас с: Jan 2013
Сообщение: #91
RE: Построение дерева иерархии или дерева комментариев
У меня теперь тоже. Спасибо вам огромное!

Единственная проблема осталась, это в админке, не работает условие. Пол дня пытался его сделать, и все пока не получается. Что самое интересное в одном месте работает, в другом нет.

А в админке, сделал чтоб можно было коммент скрывать/отображать.

Таким образом, получается следующее

PHP код:
if ($number>0) {
for (
$n=1$n<=$number$n++) {
$comments=mysql_fetch_array($result);
//тут форма
//далее условие внизу формы 
if(''.$comments[moderation].''==0){echo'<div class="comments_no">Комментарий скрыт</div>';}
else echo
'<div class="comments_ok">Комментарий виден пользователям</div>';
}
}
else echo 
'Новых комментариев нет!'

Так работает.


А вот когда перевожу на шаблоны, то не работает


Получается следующее
PHP код:
if($number>0){
    
if(!empty(
$Query)){

for (
$n=1$n<=$number$n++) {
$comments=mysql_fetch_array($result);
$res[]=array(

'login' => ''.$comments['login'].'',
'date' => ''.$comments['date'].'',
'message' => ''.$comments['message'].'',
'id' => ''.$comments['id'].'',
'moderation' => ''.$comments['moderation'].'',
'theme' => ''.$comments['theme'].'');
   }
  }
  if(!empty(
$res)){
  
$template->set("comments"$res);
  unset (
$res);
}
$template->display("comments");


А в шаблоне

PHP код:
<?php foreach ($this->comments as $value): ?>//тут форма
//условие
 if($this->moderation == 1 ): ?><div class="comments_ok">Комментарий виден пользователям</div>
<?php end: else:  ?><div class="comments_no">Комментарий скрыт</div><?php endif; endforeach; ?>

И не работает условие, я его по всякому переделывал, и со скобками {}

И как щас с end: и endif;

И сравнение по нулю, и на пустоту проверял. И $_GETom получал и что я только не делал. Значения в бд меняются при нажатии скрыть показать, а условие ни в какую не работает.


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

Вот такое же условие которое работает

PHP код:
<?php if ($this->id_ist == 1): ?>
<b>Источник :</b> <a href="http://<?=$this->istochnik?>"><?=$this->istochnik?></a>
<?php end: else : ?>
<b>Источник :</b> <?=$this->istochnik?>
<?php 
endif; ?>


Вообще понять не могу в чем причина, и ошибок вроде ж нет и условия идентичны. И в шаблоне из всего кода не работает только условие %)

Блин до меня дошло кое-что.

Сделал так

PHP код:
if(''.$comments[moderation].''==0){$comments_no='<div class="comments_no">Комментарий скрыт</div>';}
else 
$comments_ok='<div class="comments_ok">Комментарий виден пользователям</div>';
$res[]=array(
'login' => ''.$comments['login'].'',
'date' => ''.$comments['date'].'',
'message' => ''.$comments['message'].'',
'id' => ''.$comments['id'].'',
'moderation_ok' => ''.$comments_ok.'',
'moderation_no' => ''.$comments_no.'',
'theme' => ''.$comments['theme'].''); 


А в шаблоне
PHP код:
<?=$value['moderation_ok'];?>
  <?=$value['moderation_no'];?>


Но это все равно не правильно, условие должно в шаблоне работать.
(Последний раз сообщение было отредактировано 15.08.2013 в 02:13:03, отредактировал пользователь Winston.)
15.08.2013 01:33:45
Найти все сообщения Цитировать это сообщение
Kenpack Не на форуме
Сержант
*

Сообщений: 37
У нас с: Jan 2014
Сообщение: #92
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте. У меня возникли некоторые проблемы, которые возможно и вам будут интересными.

1) это будет вопрос о моём коде. У меня возникла проблема прикреплённой постраничной навигацией взятый с http://usefulscript.ru/page_navigation.php . Я вроде бы всё правильно делаю, но не как не получается, прошу вас помочь мне в этом. Я прикреплю весь свой код. Уже 2 дня мучаюсь над этим, сил уже нет моих...
Код:
<?php
session_start();

include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_COOKIE['auto']) and isset($_COOKIE['name']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
    if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
          $_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
          $_SESSION['name']=$_COOKIE['name'];//сессия с логином
          $_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
        }    
    }

if (!empty($_SESSION['name']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$name = $_SESSION['name'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id,avatar FROM users WHERE name='$name' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
//извлекаем нужные данные о пользователе
}

$link = mysql_connect("localhost", "Danil", "1234561") or die("Could not connect: " . mysql_error());
mysql_select_db("comment", $link);

$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');

if (isset($_POST[contr_cod])) {
$_SESSION[comment_mess_login]=$_POST[mess_login];
$_SESSION[comment_user_text]=$_POST[user_text];
if (get_magic_quotes_gpc()=="0") {
  $_SESSION[comment_mess_login]=mysql_real_escape_string($_SESSION[comment_mess_login]);
  $_SESSION[comment_user_text]=mysql_real_escape_string($_SESSION[comment_user_text]);
}
$_SESSION[comment_mess_login]=htmlspecialchars($_POST[mess_login]);
$_SESSION[comment_user_text]=htmlspecialchars($_POST[user_text]);

if (md5($_POST[contr_cod])==$_POST[prov_summa]) {
if (isset($_POST[parent_id])) $result = mysql_query("insert into comment (parent_id,first_parent,date,theme,login,message) values ('".$_POST[parent_id]."','".$_POST[first_parent]."','".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  else $result = mysql_query("insert into comment (date,theme,login,message) values ('".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  $_SESSION[send]='Комментарий принят и ожидает модерации.';
  $_SESSION[comment_mess_login]='';
  $_SESSION[comment_user_text]='';
  header("Location: $_SESSION[mess_url]#last");
  exit;
}
else {
  $_SESSION[send] = "Неверный проверочный код!";
  header("Location: $_SESSION[mess_url]#last");
  exit;
}
}
?>
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP']))
    $ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else $ip=$_SERVER['REMOTE_ADDR'];
$ip_position=strpos($ip,',');
if ($ip_position>0) $ip_short=substr($ip, 0, $ip_position);
else $ip_short=$ip;
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Сайт</title>
<style type="text/css">
.spoiler_body {display:none;}
.spoiler_link {cursor:pointer;}
.open_hint {margin:5px 0px 0px 0px; width:100px; border: 1px solid #4874a3; cursor:pointer; background:#afeeee;}
</style>
</head>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.spoiler_link').click(function(){
  $(this).parent().children('div.spoiler_body').toggle('normal');
  return false;
});
});
</script>
<body>
<?php
if (!isset($myrow2['avatar']) or $myrow2['avatar']=='')    
{
    if (isset($_COOKIE['name']))
{

echo ' value="'.$_COOKIE['name'].'">';
}
if (isset($_COOKIE['password']))
{

echo ' value="'.$_COOKIE['password'].'">';
}
print <<<HERE
<p><a href='vxod.php'>Авторизация</a></p>
HERE;
}

else
{
print <<<HERE
<img alt='$_SESSION[name]' src='$myrow2[avatar]' class='avatar_menu_user'><a href='user.php?id=$_SESSION[id]'>Моя страница</a>
HERE;
}

?>
<?php
echo '<div id="last" align="center">';

echo '<form method="POST" action="'.$_SESSION[mess_url].'#last">';
echo '<table border="0" style="border: 1px solid #4874a3;
border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">';
echo '<tr><td colspan="2" align="center">';
echo '<b>Добавить комментарий к теме:</b><br>';

$prov_cod=rand(1000,9980); $prov_cod_2=rand(1,19);

echo '<textarea cols="65" rows="5" name="user_text" required>'
.$_SESSION[comment_user_text].'</textarea><br>';
echo '</td></tr><tr><td width="300">';

echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20"
value="'.$_SESSION[comment_mess_login].'" required>';

echo '</td><td align="right">';
echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';

echo '<input type="text" name="contr_cod" maxlength="4" size="4" required>';
echo '<input type="submit" value="Отправить"></td></tr></table></form>';

$_SESSION[comment_mess_login]='';
$_SESSION[comment_user_text]='';

if (isset($_SESSION[send])and($_SESSION[send]!="")) {
echo '<font color="red"><b>'.$_SESSION[send].'</b></font>';
$_SESSION[send]="";
}
echo '</div>';
?>

<table border="0" width="555" align="center">
<tr>
  <td>
   <hr>
   <div style="border: 2px solid Cornflowerblue; padding:4px; border-radius:5px;">
<?php
function col_pages($count, $this) {
$j=0; $out=""; $td='<td width="35">';
if (($this-3)<1) $i=1;
    else $i=$this-3;
if ($i==1) $i++;

if (($count-7)<$i) $i=$count-7;
if ($i<2) $i=2;

if ($this!=1) $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list=1">1</a></td>';
    else $out.=$td.'<b>[ 1 ]</b></td>';

if ($i>2) $out.=$td.'...</td>';

while ((($i<=($this+3)) or ($j<7)) and ($i<$count)) {
if ($i!==$this) $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$i.'">'.$i.'</a></td>';
    else $out.=$td.'<b>[ '.$i.' ]</b></td>';
$i++; $j++;
}
if ($i<$count) $out.=$td.'...</td>';
if ($count>1) {
    if ($count!=$this) $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$count.'">'.$count.'</a></td>';
    else $out.=$td.'<b>[ '.$count.' ]</b></td>';
}
return $out;
}
if (is_numeric($_POST[comment_id])and($_POST[ocenka]=='0' or $_POST[ocenka]=='1')){
$result = mysql_query("SELECT count(id),ocenka FROM ocenka_comment WHERE comment_id='".$_POST[comment_id]."' and ip='".$ip_short."'", $link);
$number = mysql_fetch_array($result);
if ($number[0]==0) {
    $result = mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
    values ('".date("Y-m-d H:i:s")."','".$_POST[comment_id]."','".$ip_short."','".$_POST[ocenka]."')"); }
elseif ($number[ocenka]!=$_POST[ocenka]) {
    $result = mysql_query("UPDATE ocenka_comment
    SET date='".date("Y-m-d H:i:s")."',ocenka='".$_POST[ocenka]."'
    WHERE comment_id='".$_POST[comment_id]."' and ip='".$ip_short."'"); }
}

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;


$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1", $link);
$count_list=floor((mysql_num_rows($result)-1)/5)+1;

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;


$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0 ORDER BY id LIMIT ".($comment_list*5-5).",5", $link);
$number = mysql_num_rows($result);
$zapros='';
for ($n=1; $n<=$number; $n++) {
     $parents[$n]=mysql_fetch_array($result);
     $zapros.=$parents[$n][id].','.$parents[$n][id].',';
}
$zapros=substr($zapros, 0, -1);

$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and id IN(".$zapros.")  ORDER BY id desc", $link);
$result2 = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent IN(".$zapros.") ORDER BY id", $link);
$number = mysql_num_rows($result);

if ($number>0) {
echo '<hr><div align="center" style="padding:3px; border-radius:5px;">
<u><b>Последние комментарии посетителей:</b></u><br>';


function parents($parent=0,$left=0) {
global $tags;


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='".$tags[$parent][$i][0]."' LIMIT 1");
$ocenka_com=mysql_fetch_array($result_minus);

if ($tags[$parent][$i][2]=='Administrator') $tags[$parent][$i][2]='<font color="#cc1111">Administrator</font>';
if ($tags[$parent][$i][4]==0) $tags[$parent][$i][4]=$tags[$parent][$i][0];
      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'.$tags[$parent][$i][0].'"></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'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
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'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
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 '<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" class="open_hint" onClick="comm_on('.$tags[$parent][$i][0].','.$tags[$parent][$i][6].')">Ответить</div>';
     if (isset($tags[ $tags[$parent][$i][0] ])) parents($tags[$parent][$i][0],20);
     echo '</div>';
}
}
}
else echo '<hr>';
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'] );
while ($comments=mysql_fetch_assoc($result2)) $tags[(int)$comments['parent_id']][]=array((int)$comments['id'], $comments['message'], $comments['login'], $comments['date'], $comments['plus'], $comments['minus'], $comments['first_parent'] );
echo parents().'</div>';
echo '<table border="0"><tr align="center"><td>Еще комментарии:</td>'.col_pages((int)$count_list, (int)$comment_list)."</tr></table>";
?>
<div id="hint" style="position:absolute; display: none;">
<?php echo '<form name="add_comment" method="POST" action="'.$_SESSION[mess_url].'#last">'; ?>
<table border="0" style="border: 1px solid #4874a3; border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">
  <tr>
   <td colspan="2" style="cursor:pointer;" align="right"><font color="Lawngreen"><div id="close_hint"><b>Закрыть[x]</b></div></font>
    <?php
    $prov_cod=rand(100,980); $prov_cod_2=rand(1,19);

    echo '<textarea cols="65" rows="5" name="user_text" required>'.$_SESSION[comment_user_text].'</textarea>';
   echo '</td></tr><tr><td width="300">';

    echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20" value="'.$_SESSION[comment_mess_login].'" required>';

   echo '</td><td align="right">';
    echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
    echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';
    ?>
    <input type="text" name="contr_cod" maxlength="4" size="4" required>
    <input type="hidden" name="parent_id" value="0">
    <input type="hidden" name="first_parent" value="0">
    <input type="submit" value="Отправить">
   </td>
  </tr>
</table>
</form>
</div>
</div>
  </td>
</tr>
</table>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$('html').mousemove(function(e){
$('.open_hint').click(function(){
  $('#hint').fadeIn(700);
  $('#hint').offset({top:e.pageY+15, left:e.pageX-550});
  return false;
});
});
$('#close_hint').click(function(){
$('#hint').fadeOut(700);
return false;
});
</script>
<script type="text/javascript">
function comm_on(p_id,first_p) {
document.add_comment.parent_id.value = p_id;
document.add_comment.first_parent.value = first_p;
}
</script>
</body>
</html>

2) Вопрос пойдёт о выводе (иерархии или дерева комментариев), возможно ошибка в моём коде, простите если это будет ложным вызовом. Не связанно с (1) вопросом . В сообщение #48 на странице 5, вы сделали чтобы можно было ещё ответить на другой комментарий внутри родительского, и у меня возник такой вопрос: когда я отвечаю на 2.1.1, который изображён на картине в сообщений #48, после сразу же идёт 2 страница по ограничению сообщений на странице, а на 2 странице полностью пусто и не отображается сообщение которое ответил на 2.1.1 . Надеюсь вы поняли мою мысль.
10.01.2014 19:02:29
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #93
RE: Построение дерева иерархии или дерева комментариев
Я правильно понимаю, что у вас неправильно рассчитывается количество листов с комментариями и отсюда (возможно) вытекает второй пункт?

А как вам необходимо делить комментарии (всего, например 5 на страницу или 5 родительских и к ним неограниченно дочерних)?
Просто у вас расчет страниц отталкивается от общего количества комментариев к теме, а вывод комментариев - от количества родительских комментариев.

Если не больше 5 родительских и неограниченно дочерних, то измените строки
PHP код:
$result mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1"$link);
 
$count_list=floor((mysql_num_rows($result)-1)/5)+1

на

PHP код:
$result mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0"$link);
 
$count_list=floor((mysql_num_rows($result)-1)/5)+1
10.01.2014 19:49:39
Найти все сообщения Цитировать это сообщение
Kenpack Не на форуме
Сержант
*

Сообщений: 37
У нас с: Jan 2014
Сообщение: #94
RE: Построение дерева иерархии или дерева комментариев
У меня получился такой результат: на одной странице я сделал все родительские комментарии, а на 2 странице 1 родительский и 4 дочерних, причём 3 из них отображаются, а 4 дочерний на другую страницу перешел, да ещё и не отображается. Я ещё сделал тест, я добавил 1 дочерний коммент к родительскому в 1 странице, когда там уже 5 комментов (предел) то дочерний не добавляется, то есть не отображается, да ещё возможно добавляет 1 пустую страницу, если нету места вообще.

Весь код у меня такой
Код:
<?php
session_start();

include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_COOKIE['auto']) and isset($_COOKIE['name']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
    if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
          $_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
          $_SESSION['name']=$_COOKIE['name'];//сессия с логином
          $_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
        }    
    }

if (!empty($_SESSION['name']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$name = $_SESSION['name'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id,avatar FROM users WHERE name='$name' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
//извлекаем нужные данные о пользователе
}

$link = mysql_connect("localhost", "Danil", "1234561") or die("Could not connect: " . mysql_error());
mysql_select_db("comment", $link);

$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');

if (isset($_POST[contr_cod])) {
$_SESSION[comment_mess_login]=$_POST[mess_login];
$_SESSION[comment_user_text]=$_POST[user_text];
if (get_magic_quotes_gpc()=="0") {
  $_SESSION[comment_mess_login]=mysql_real_escape_string($_SESSION[comment_mess_login]);
  $_SESSION[comment_user_text]=mysql_real_escape_string($_SESSION[comment_user_text]);
}
$_SESSION[comment_mess_login]=htmlspecialchars($_POST[mess_login]);
$_SESSION[comment_user_text]=htmlspecialchars($_POST[user_text]);

if (md5($_POST[contr_cod])==$_POST[prov_summa]) {
if (isset($_POST[parent_id])) $result = mysql_query("insert into comment (parent_id,first_parent,date,theme,login,message) values ('".$_POST[parent_id]."','".$_POST[first_parent]."','".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  else $result = mysql_query("insert into comment (date,theme,login,message) values ('".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  $_SESSION[send]='Комментарий принят и ожидает модерации.';
  $_SESSION[comment_mess_login]='';
  $_SESSION[comment_user_text]='';
  header("Location: $_SESSION[mess_url]#last");
  exit;
}
else {
  $_SESSION[send] = "Неверный проверочный код!";
  header("Location: $_SESSION[mess_url]#last");
  exit;
}
}
?>
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP']))
    $ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else $ip=$_SERVER['REMOTE_ADDR'];
$ip_position=strpos($ip,',');
if ($ip_position>0) $ip_short=substr($ip, 0, $ip_position);
else $ip_short=$ip;
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Сайт</title>
<style type="text/css">
.spoiler_body {display:none;}
.spoiler_link {cursor:pointer;}
.open_hint {margin:5px 0px 0px 0px; width:100px; border: 1px solid #4874a3; cursor:pointer; background:#afeeee;}
</style>
</head>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.spoiler_link').click(function(){
  $(this).parent().children('div.spoiler_body').toggle('normal');
  return false;
});
});
</script>
<body>
<?php
if (!isset($myrow2['avatar']) or $myrow2['avatar']=='')    
{
    if (isset($_COOKIE['name']))
{

echo ' value="'.$_COOKIE['name'].'">';
}
if (isset($_COOKIE['password']))
{

echo ' value="'.$_COOKIE['password'].'">';
}
print <<<HERE
<p><a href='vxod.php'>Авторизация</a></p>
HERE;
}

else
{
print <<<HERE
<img alt='$_SESSION[name]' src='$myrow2[avatar]' class='avatar_menu_user'><a href='user.php?id=$_SESSION[id]'>Моя страница</a>
HERE;
}

?>
<?php
echo '<div id="last" align="center">';

echo '<form method="POST" action="'.$_SESSION[mess_url].'#last">';
echo '<table border="0" style="border: 1px solid #4874a3;
border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">';
echo '<tr><td colspan="2" align="center">';
echo '<b>Добавить комментарий к теме:</b><br>';

$prov_cod=rand(1000,9980); $prov_cod_2=rand(1,19);

echo '<textarea cols="65" rows="5" name="user_text" required>'
.$_SESSION[comment_user_text].'</textarea><br>';
echo '</td></tr><tr><td width="300">';

echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20"
value="'.$_SESSION['name'].'" required>';

echo '</td><td align="right">';
echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';

echo '<input type="text" name="contr_cod" maxlength="4" size="4" required>';
echo '<input type="submit" value="Отправить"></td></tr></table></form>';

$_SESSION[comment_mess_login]='';
$_SESSION[comment_user_text]='';

if (isset($_SESSION[send])and($_SESSION[send]!="")) {
echo '<font color="red"><b>'.$_SESSION[send].'</b></font>';
$_SESSION[send]="";
}
echo '</div>';
?>

<table border="0" width="555" align="center">
<tr>
  <td>
   <hr>
   <div style="border: 2px solid Cornflowerblue; padding:4px; border-radius:5px;">
<?php
function col_pages($count, $this, $radius) {
$j=0; $out=""; $td='<td width="35" bgcolor="lightgreen">';
if (($this-$radius)<1) $i=1;
     else $i=$this-$radius;
if ($i==1) $i++;

if (($count-($radius*2+1))<$i) $i=$count-($radius*2+1);
if ($i<2) $i=2;

if ($this!=1)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list=1">1</a></td>';
     else $out.=$td.'<b>[ 1 ]</b></td>';

if ($i>2) $out.=$td.'...</td>';

while ((($i<=($this+$radius)) or ($j<($radius*2+1))) and ($i<$count)) {
if ($i!==$this)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$i.'">'.$i.'</a></td>';
     else $out.=$td.'<b>[ '.$i.' ]</b></td>';
$i++; $j++;
}
if ($i<$count) $out.=$td.'...</td>';
if ($count>1) {
     if ($count!=$this)
      $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$count.'">
      '.$count.'</a></td>';
     else $out.=$td.'<b>[ '.$count.' ]</b></td>';
}
return $out;
}
if (is_numeric($_POST[comment_id])and($_POST[ocenka]=='0' or $_POST[ocenka]=='1')){
$result = mysql_query("SELECT count(id),ocenka FROM ocenka_comment WHERE comment_id='".$_POST[comment_id]."' and ip='".$ip_short."'", $link);
$number = mysql_fetch_array($result);
if ($number[0]==0) {
    $result = mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
    values ('".date("Y-m-d H:i:s")."','".$_POST[comment_id]."','".$ip_short."','".$_POST[ocenka]."')"); }
elseif ($number[ocenka]!=$_POST[ocenka]) {
    $result = mysql_query("UPDATE ocenka_comment
    SET date='".date("Y-m-d H:i:s")."',ocenka='".$_POST[ocenka]."'
    WHERE comment_id='".$_POST[comment_id]."' and ip='".$ip_short."'"); }
}

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;


$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0", $link);
$count_list=floor((mysql_num_rows($result)-1)/5)+1;

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;

$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 ORDER BY id LIMIT ".($comment_list*5-5).",5", $link);
$number = mysql_num_rows($result);
$zapros='';
for ($n=1; $n<=$number; $n++) {
     $parents[$n]=mysql_fetch_array($result);
     $zapros.=$parents[$n][id].','.$parents[$n][id].',';
}
$zapros=substr($zapros, 0, -1);

$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and id IN(".$zapros.")  ORDER BY id desc", $link);
$result2 = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent IN(".$zapros.") ORDER BY id", $link);
$number = mysql_num_rows($result);

if ($number>0) {
echo '<hr><div align="center" style="padding:3px; border-radius:5px;">
<u><b>Последние комментарии посетителей:</b></u><br>';


function parents($parent=0,$left=0) {
global $tags;


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='".$tags[$parent][$i][0]."' LIMIT 1");
$ocenka_com=mysql_fetch_array($result_minus);

if ($tags[$parent][$i][2]=='Administrator') $tags[$parent][$i][2]='<font color="#cc1111">Administrator</font>';
if ($tags[$parent][$i][4]==0) $tags[$parent][$i][4]=$tags[$parent][$i][0];
      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'.$tags[$parent][$i][0].'"></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'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
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'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
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 '<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" class="open_hint" onClick="comm_on('.$tags[$parent][$i][0].','.$tags[$parent][$i][6].')">Ответить</div>';
     if (isset($tags[ $tags[$parent][$i][0] ])) parents($tags[$parent][$i][0],20);
     echo '</div>';
    
}
}
}
else echo '<hr>';
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'] );
while ($comments=mysql_fetch_assoc($result2)) $tags[(int)$comments['parent_id']][]=array((int)$comments['id'], $comments['message'], $comments['login'], $comments['date'], $comments['plus'], $comments['minus'], $comments['first_parent'] );
echo parents().'</div>';
echo '<table style="border: 1px solid #4874a3;" cellspacing="2" cellpadding="0">';
echo '<tr align="center">';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'">В начало</a>';
    else echo 'В начало';
  echo '</td>';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list-1).'">Назад</a>';
    else echo 'Назад';
  echo '</td>';

echo col_pages((int)$count_list, (int)$comment_list, 3);

  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list+1).'">Вперед</a>';
    else echo 'Вперед';
  echo '</td>';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.$count_list.'">В конец</a>';
    else echo 'В конец';
  echo '</td>';
echo '</tr>';
echo '</table>';
?>
<div id="hint" style="position:absolute; display: none;">
<?php echo '<form name="add_comment" method="POST" action="'.$_SESSION[mess_url].'#last">'; ?>
<table border="0" style="border: 1px solid #4874a3; border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">
  <tr>
   <td colspan="2" style="cursor:pointer;" align="right"><font color="Lawngreen"><div id="close_hint"><b>Закрыть[x]</b></div></font>
    <?php
    $prov_cod=rand(100,980); $prov_cod_2=rand(1,19);

    echo '<textarea cols="65" rows="5" name="user_text" required>'.$_SESSION[comment_user_text].'</textarea>';
   echo '</td></tr><tr><td width="300">';

    echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20" value="'.$_SESSION[comment_mess_login].'" required>';

   echo '</td><td align="right">';
    echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
    echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';
    ?>
    <input type="text" name="contr_cod" maxlength="4" size="4" required>
    <input type="hidden" name="parent_id" value="0">
    <input type="hidden" name="first_parent" value="0">
    <input type="submit" value="Отправить">
   </td>
  </tr>
</table>
</form>
</div>
</div>
  </td>
</tr>
</table>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$('html').mousemove(function(e){
$('.open_hint').click(function(){
  $('#hint').fadeIn(700);
  $('#hint').offset({top:e.pageY+15, left:e.pageX-550});
  return false;
});
});
$('#close_hint').click(function(){
$('#hint').fadeOut(700);
return false;
});
</script>
<script type="text/javascript">
function comm_on(p_id,first_p) {
document.add_comment.parent_id.value = p_id;
document.add_comment.first_parent.value = first_p;
}
</script>
</body>
</html>

У меня ещё один вопрос возник, точнее я забыл его задать в первый раз. Как например отключить оценку комментирования от имени Administrator? А то просто люди проголосуют против администратора и придётся открывать коммент.
10.01.2014 20:53:46
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #95
RE: Построение дерева иерархии или дерева комментариев
Так вы так и не ответили, как вам нужно было сделать разбивку на странички и помогло ли добавление "and first_parent=0" в SQL запрос.

Для того, чтобы не сохранять оценки, поставленные Админу, замените
PHP код:
if (is_numeric($_POST[comment_id])and($_POST[ocenka]=='0' or $_POST[ocenka]=='1')){
 
$result mysql_query("SELECT count(id),ocenka FROM ocenka_comment 
WHERE comment_id='"
.$_POST[comment_id]."' and ip='".$ip_short."'"$link);
 
$number mysql_fetch_array($result);
 if (
$number[0]==0) {
     
$result mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
     values ('"
.date("Y-m-d H:i:s")."','".$_POST[comment_id]."','".$ip_short."','".$_POST[ocenka]."')"); }
 elseif (
$number[ocenka]!=$_POST[ocenka]) {
     
$result mysql_query("UPDATE ocenka_comment
     SET date='"
.date("Y-m-d H:i:s")."',ocenka='".$_POST[ocenka]."'
     WHERE comment_id='"
.$_POST[comment_id]."' and ip='".$ip_short."'"); }
 } 

на

PHP код:
if (is_numeric($_POST[comment_id])and($_POST[ocenka]=='0' or $_POST[ocenka]=='1')){
 
$result mysql_query("SELECT login FROM comment WHERE id='".$_POST[comment_id]."'"$link);
 
$login=mysql_fetch_array($result);
 if (
$login['login']!='Administrator') {
 
$result mysql_query("SELECT count(id),ocenka FROM ocenka_comment 
WHERE comment_id='"
.$_POST[comment_id]."' and ip='".$ip_short."'"$link);
 
$number mysql_fetch_array($result);
 if (
$number[0]==0) {
     
$result mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
     values ('"
.date("Y-m-d H:i:s")."','".$_POST[comment_id]."','".$ip_short."','".$_POST[ocenka]."')"); }
 elseif (
$number[ocenka]!=$_POST[ocenka]) {
     
$result mysql_query("UPDATE ocenka_comment
     SET date='"
.date("Y-m-d H:i:s")."',ocenka='".$_POST[ocenka]."'
     WHERE comment_id='"
.$_POST[comment_id]."' and ip='".$ip_short."'"); }
 }
 } 
10.01.2014 21:36:04
Найти все сообщения Цитировать это сообщение
Kenpack Не на форуме
Сержант
*

Сообщений: 37
У нас с: Jan 2014
Сообщение: #96
RE: Построение дерева иерархии или дерева комментариев
Спасибо, этот ответ мне помог, ещё было бы классно убрать как-нибудь вообще картинки и цифру где голосовать за Administrator. А простите что не ответил, как-то забылся, просто спасть уже хочется. Мне нужно (скопировал с #93) 5 родительских и к ним неограниченно дочерних. Спасибо за то, что помогаете, я сейчас пойду спать, завтра посмотрю что написали, если напишите что-нибудь. Smile
10.01.2014 21:43:05
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #97
RE: Построение дерева иерархии или дерева комментариев
Для того, чтобы убрать возможность голосовать за или против Админа, замените следующий код
PHP код:
echo '<td width="20" >';
 echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#m'.$tags[$parent][$i][0].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
 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'.$tags[$parent][$i][0].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
 echo 
'<input type="hidden" name="ocenka" value="0">';
 echo 
'<input type="image" src="comm_down.gif" title="Плохой комментарий" align="middle">';
 echo 
'</form></td></tr></table>'

на такой:
PHP код:
if ($tags[$parent][$i][2]!='<font color="#cc1111">Administrator</font>'){
 echo 
'<td width="20" >';
 echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#m'.$tags[$parent][$i][0].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
 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'.$tags[$parent][$i][0].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
 echo 
'<input type="hidden" name="ocenka" value="0">';
 echo 
'<input type="image" src="comm_down.gif" title="Плохой комментарий" align="middle">';
 echo 
'</form>';
 }
 echo 
'</td></tr></table>'

Предыдущий код также следует оставить, т.к. иначе "хитрые" пользователи могут подменить id комментария в POST запросе и заминусовать Админа.
10.01.2014 21:55:16
Найти все сообщения Цитировать это сообщение
Kenpack Не на форуме
Сержант
*

Сообщений: 37
У нас с: Jan 2014
Сообщение: #98
RE: Построение дерева иерархии или дерева комментариев
И снова здравствуйте. Всё получилось, теперь вообще голосование за админа нету. Мне бы хотелось сделать, как вы сказали в сообщений #93 (5 родительских и к ним неограниченно дочерних.), вот чтобы мне хотелось реализовать, поможете мне?
11.01.2014 11:05:49
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

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

PHP код:
$result mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0 ORDER BY id LIMIT ".($comment_list*5-5).",5"$link); 

А в #94 сообщении уже

PHP код:
$result mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 ORDER BY id LIMIT ".($comment_list*5-5).",5"$link); 

Короче куда-то потеряли "and first_parent=0". Так что добавьте обратно, чтобы было
PHP код:
$result mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0 ORDER BY id LIMIT ".($comment_list*5-5).",5"$link); 

Так же по коду вижу, что у Вас два раза подгружается jQuery, удалите лишнее нижнее подключение к данной библиотеке:
PHP код:
<script type="text/javascript"
 
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
11.01.2014 12:44:42
Найти все сообщения Цитировать это сообщение
Kenpack Не на форуме
Сержант
*

Сообщений: 37
У нас с: Jan 2014
Сообщение: #100
RE: Построение дерева иерархии или дерева комментариев
Всё равно такой же результат... я уже не знаю, то ли не понимаю вас, или сам уже туплю. Например я написал 5 родительских комментариев на одной странице и добавил один дочерний к любому, затем дочерний не появляется к родительскому комменту и добавляет вторую пустую страницу из-за ограничения.
У меня весь код во такой:
Код:
<?php
session_start();

include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
if (isset($_COOKIE['auto']) and isset($_COOKIE['name']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
    if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
          $_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
          $_SESSION['name']=$_COOKIE['name'];//сессия с логином
          $_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
        }    
    }

if (!empty($_SESSION['name']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$name = $_SESSION['name'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id,avatar FROM users WHERE name='$name' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
//извлекаем нужные данные о пользователе
}

$link = mysql_connect("localhost", "Danil", "1234561") or die("Could not connect: " . mysql_error());
mysql_select_db("comment", $link);

$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');

if (isset($_POST[contr_cod])) {
$_SESSION[comment_mess_login]=$_POST[mess_login];
$_SESSION[comment_user_text]=$_POST[user_text];
if (get_magic_quotes_gpc()=="0") {
  $_SESSION[comment_mess_login]=mysql_real_escape_string($_SESSION[comment_mess_login]);
  $_SESSION[comment_user_text]=mysql_real_escape_string($_SESSION[comment_user_text]);
}
$_SESSION[comment_mess_login]=htmlspecialchars($_POST[mess_login]);
$_SESSION[comment_user_text]=htmlspecialchars($_POST[user_text]);

if (md5($_POST[contr_cod])==$_POST[prov_summa]) {
if (isset($_POST[parent_id])) $result = mysql_query("insert into comment (parent_id,first_parent,date,theme,login,message) values ('".$_POST[parent_id]."','".$_POST[first_parent]."','".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  else $result = mysql_query("insert into comment (date,theme,login,message) values ('".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  $_SESSION[send]='Комментарий принят и ожидает модерации.';
  $_SESSION[comment_mess_login]='';
  $_SESSION[comment_user_text]='';
  header("Location: $_SESSION[mess_url]#last");
  exit;
}
else {
  $_SESSION[send] = "Неверный проверочный код!";
  header("Location: $_SESSION[mess_url]#last");
  exit;
}
}
?>
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP']))
    $ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else $ip=$_SERVER['REMOTE_ADDR'];
$ip_position=strpos($ip,',');
if ($ip_position>0) $ip_short=substr($ip, 0, $ip_position);
else $ip_short=$ip;
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Сайт</title>
<style type="text/css">
.spoiler_body {display:none;}
.spoiler_link {cursor:pointer;}
.open_hint {margin:5px 0px 0px 0px; width:100px; border: 1px solid #4874a3; cursor:pointer; background:#afeeee;}
</style>
</head>
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.spoiler_link').click(function(){
  $(this).parent().children('div.spoiler_body').toggle('normal');
  return false;
});
});
</script>
<body>
<?php
if (!isset($myrow2['avatar']) or $myrow2['avatar']=='')    
{
    if (isset($_COOKIE['name']))
{

echo ' value="'.$_COOKIE['name'].'">';
}
if (isset($_COOKIE['password']))
{

echo ' value="'.$_COOKIE['password'].'">';
}
print <<<HERE
<p><a href='vxod.php'>Авторизация</a></p>
HERE;
}

else
{
print <<<HERE
<img alt='$_SESSION[name]' src='$myrow2[avatar]' class='avatar_menu_user'><a href='user.php?id=$_SESSION[id]'>Моя страница</a>
HERE;
}

?>
<?php
echo '<div id="last" align="center">';

echo '<form method="POST" action="'.$_SESSION[mess_url].'#last">';
echo '<table border="0" style="border: 1px solid #4874a3;
border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">';
echo '<tr><td colspan="2" align="center">';
echo '<b>Добавить комментарий к теме:</b><br>';

$prov_cod=rand(1000,9980); $prov_cod_2=rand(1,19);

echo '<textarea cols="65" rows="5" name="user_text" required>'
.$_SESSION[comment_user_text].'</textarea><br>';
echo '</td></tr><tr><td width="300">';

echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20"
value="'.$_SESSION['name'].'" required>';

echo '</td><td align="right">';
echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';

echo '<input type="text" name="contr_cod" maxlength="4" size="4" required>';
echo '<input type="submit" value="Отправить"></td></tr></table></form>';

$_SESSION[comment_mess_login]='';
$_SESSION[comment_user_text]='';

if (isset($_SESSION[send])and($_SESSION[send]!="")) {
echo '<font color="red"><b>'.$_SESSION[send].'</b></font>';
$_SESSION[send]="";
}
echo '</div>';
?>

<table border="0" width="555" align="center">
<tr>
  <td>
   <hr>
   <div style="border: 2px solid Cornflowerblue; padding:4px; border-radius:5px;">
<?php
function col_pages($count, $this, $radius) {
$j=0; $out=""; $td='<td width="35" bgcolor="lightgreen">';
if (($this-$radius)<1) $i=1;
     else $i=$this-$radius;
if ($i==1) $i++;

if (($count-($radius*2+1))<$i) $i=$count-($radius*2+1);
if ($i<2) $i=2;

if ($this!=1)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list=1">1</a></td>';
     else $out.=$td.'<b>[ 1 ]</b></td>';

if ($i>2) $out.=$td.'...</td>';

while ((($i<=($this+$radius)) or ($j<($radius*2+1))) and ($i<$count)) {
if ($i!==$this)
  $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$i.'">'.$i.'</a></td>';
     else $out.=$td.'<b>[ '.$i.' ]</b></td>';
$i++; $j++;
}
if ($i<$count) $out.=$td.'...</td>';
if ($count>1) {
     if ($count!=$this)
      $out.=$td.'<a href="'.$_SESSION[mess_url].'?comment_list='.$count.'">
      '.$count.'</a></td>';
     else $out.=$td.'<b>[ '.$count.' ]</b></td>';
}
return $out;
}
if (is_numeric($_POST[comment_id])and($_POST[ocenka]=='0' or $_POST[ocenka]=='1')){
$result = mysql_query("SELECT login FROM comment WHERE id='".$_POST[comment_id]."'", $link);
$login=mysql_fetch_array($result);
if ($login['login']!='Administrator') {
$result = mysql_query("SELECT count(id),ocenka FROM ocenka_comment WHERE comment_id='".$_POST[comment_id]."' and ip='".$ip_short."'", $link);
$number = mysql_fetch_array($result);
if ($number[0]==0) {
     $result = mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
     values ('".date("Y-m-d H:i:s")."','".$_POST[comment_id]."','".$ip_short."','".$_POST[ocenka]."')"); }
elseif ($number[ocenka]!=$_POST[ocenka]) {
     $result = mysql_query("UPDATE ocenka_comment
     SET date='".date("Y-m-d H:i:s")."',ocenka='".$_POST[ocenka]."'
     WHERE comment_id='".$_POST[comment_id]."' and ip='".$ip_short."'"); }
}
}

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;


$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0", $link);
$count_list=floor((mysql_num_rows($result)-1)/5)+1;

if (is_numeric($_GET[comment_list]) and $_GET[comment_list]>0) {
if ($_GET[comment_list]>$count_list) $comment_list=$count_list;
    else $comment_list=$_GET[comment_list];
}
else $comment_list=1;
if ($comment_list==0) $comment_list=1;

$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent=0 ORDER BY id LIMIT ".($comment_list*5-5).",5", $link);
$number = mysql_num_rows($result);
$zapros='';
for ($n=1; $n<=$number; $n++) {
     $parents[$n]=mysql_fetch_array($result);
     $zapros.=$parents[$n][id].','.$parents[$n][id].',';
}
$zapros=substr($zapros, 0, -1);

$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and id IN(".$zapros.")  ORDER BY id desc", $link);
$result2 = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 and first_parent IN(".$zapros.") ORDER BY id", $link);
$number = mysql_num_rows($result);

if ($number>0) {
echo '<hr><div align="center" style="padding:3px; border-radius:5px;">
<u><b>Последние комментарии посетителей:</b></u><br>';


function parents($parent=0,$left=0) {
global $tags;


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='".$tags[$parent][$i][0]."' LIMIT 1");
$ocenka_com=mysql_fetch_array($result_minus);

if ($tags[$parent][$i][2]=='Administrator') $tags[$parent][$i][2]='<font color="#cc1111">Administrator</font>';
if ($tags[$parent][$i][4]==0) $tags[$parent][$i][4]=$tags[$parent][$i][0];
      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'.$tags[$parent][$i][0].'"></div><b>'.$tags[$parent][$i][2].'</b></td>';
echo '<td width="140">';
echo '<span style="font-size:12px;">('.$tags[$parent][$i][3].')</span></td>';
if ($tags[$parent][$i][2]!='<font color="#cc1111">Administrator</font>'){
echo '<td width="20" >';
echo '<form method="POST" action="'.$_SESSION[mess_url].'#m'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
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'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="comment_id" value="'.$tags[$parent][$i][0].'">';
echo '<input type="hidden" name="ocenka" value="0">';
echo '<input type="image" src="comm_down.gif" title="Плохой комментарий" align="middle">';
echo '</form>';
}
echo '</td></tr></table>';
echo '<table border="0" width="95%" style="border: 1px solid #eeeeee;"bgcolor="#f0fff0">';
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" class="open_hint" onClick="comm_on('.$tags[$parent][$i][0].','.$tags[$parent][$i][6].')">Ответить</div>';
     if (isset($tags[ $tags[$parent][$i][0] ])) parents($tags[$parent][$i][0],20);
     echo '</div>';
    
}
}
}
else echo '<hr>';
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'] );
while ($comments=mysql_fetch_assoc($result2)) $tags[(int)$comments['parent_id']][]=array((int)$comments['id'], $comments['message'], $comments['login'], $comments['date'], $comments['plus'], $comments['minus'], $comments['first_parent'] );
echo parents().'</div>';
echo '<table style="border: 1px solid #4874a3;" cellspacing="2" cellpadding="0">';
echo '<tr align="center">';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'">В начало</a>';
    else echo 'В начало';
  echo '</td>';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list>1) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list-1).'">Назад</a>';
    else echo 'Назад';
  echo '</td>';

echo col_pages((int)$count_list, (int)$comment_list, 3);

  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.($comment_list+1).'">Вперед</a>';
    else echo 'Вперед';
  echo '</td>';
  echo '<td bgcolor="lightgreen" width="65">';
if ($comment_list<$count_list) echo '<a href="'.$_SESSION[mess_url].'?comment_list='.$count_list.'">В конец</a>';
    else echo 'В конец';
  echo '</td>';
echo '</tr>';
echo '</table>';
?>
<div id="hint" style="position:absolute; display: none;">
<?php echo '<form name="add_comment" method="POST" action="'.$_SESSION[mess_url].'#last">'; ?>
<table border="0" style="border: 1px solid #4874a3; border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">
  <tr>
   <td colspan="2" style="cursor:pointer;" align="right"><font color="Lawngreen"><div id="close_hint"><b>Закрыть[x]</b></div></font>
    <?php
    $prov_cod=rand(100,980); $prov_cod_2=rand(1,19);

    echo '<textarea cols="65" rows="5" name="user_text" required>'.$_SESSION[comment_user_text].'</textarea>';
   echo '</td></tr><tr><td width="300">';

    echo '<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20" value="'.$_SESSION[comment_mess_login].'" required>';

   echo '</td><td align="right">';
    echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
    echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';
    ?>
    <input type="text" name="contr_cod" maxlength="4" size="4" required>
    <input type="hidden" name="parent_id" value="0">
    <input type="hidden" name="first_parent" value="0">
    <input type="submit" value="Отправить">
   </td>
  </tr>
</table>
</form>
</div>
</div>
  </td>
</tr>
</table>
<script type="text/javascript">
$('html').mousemove(function(e){
$('.open_hint').click(function(){
  $('#hint').fadeIn(700);
  $('#hint').offset({top:e.pageY+15, left:e.pageX-550});
  return false;
});
});
$('#close_hint').click(function(){
$('#hint').fadeOut(700);
return false;
});
</script>
<script type="text/javascript">
function comm_on(p_id,first_p) {
document.add_comment.parent_id.value = p_id;
document.add_comment.first_parent.value = first_p;
}
</script>
</body>
</html>
11.01.2014 15:03:12
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru