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

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

1. Если в 1 код добавляю код:
PHP код:
$res=mysqli_query($db,"insert into comment (parent_id, first_parent, date, theme_id, login, ip, message) values ('".$_POST["parent_id"]."','".$_POST["f_parent"]."','".$time."','".$theme_id."','".$mess_login."',INET_ATON('".$ip."'),'".$user_text."')");
    else 
$res=mysqli_query($db,"insert into comment (date, theme_id, login, ip, message) values ('".$time."','".$theme_id."','".$mess_login."',INET_ATON('".$ip."'),'".$user_text."')"); 

где, INET_ATON('".$ip."'), как и файле в rating_comm.php. На этом этапе все ясно, как реализуется.

Скриншот структуры таблицы comment:
[Изображение: tid_135_ip.png]

Из вашего сообщения:
Цитата:А какой тип данных у ip?
Могу предположить, что int(10), а $_SERVER[REMOTE_ADDR] - varchar!
int(10) - так и есть, $_SERVER[REMOTE_ADDR] - правильно?

Куда именно надо прописать данный запрос и как его закончить, FROM comment - это понятно, но правильно ли так будет? :
Код:
[b]SELECT date, INET_NTOA(ip) AS ip FROM[/b]...
14.05.2015 10:47:05
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #212
RE: Построение дерева иерархии или дерева комментариев
Я имел ввиду что в БД столбец ip имеет тип данный int(10) в то время как Вы пытались в этот столбец запихнуть переменную $ip, которой присваивалось значение из $_SERVER[REMOTE_ADDR]. Следовательно, $ip как и $_SERVER[REMOTE_ADDR] имеет строковый тип данных из-за чего в БД ничего и не писалось.
Код я привел для примера, чтобы Вы знали, как из int получить обратно нормальный IP адрес.
А вставлять его надо туда, куда Вам надо. Я то откуда знаю где Вы планируете выводить IP адрес и планируете ли вообще. Может Вы для себя записывает IP адреса. Unknown
14.05.2015 20:05:55
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #213
RE: Построение дерева иерархии или дерева комментариев
(14.05.2015 20:05:55)Admin писал(а):  Я имел ввиду что в БД столбец ip имеет тип данный int(10) в то время как Вы пытались в этот столбец запихнуть переменную $ip, которой присваивалось значение из $_SERVER[REMOTE_ADDR]. Следовательно, $ip как и $_SERVER[REMOTE_ADDR] имеет строковый тип данных из-за чего в БД ничего и не писалось.
Код я привел для примера, чтобы Вы знали, как из int получить обратно нормальный IP адрес.
А вставлять его надо туда, куда Вам надо. Я то откуда знаю где Вы планируете выводить IP адрес и планируете ли вообще. Может Вы для себя записывает IP адреса. Unknown

Здравствуйте,
Я хотел добавить поле ip в таблицу comment, в таблице ocenka_comment поле ip есть и данные записываются.
Поле ip добавил, код указанный в предыдущем сообщении добавил в 1 код, но проблема с выводом, ip для всех сообщений 2470...
Вот и думаю, как реализовать, чтобы данные ip в таблице comment отображались нормально, а то в данный момент 2470...
14.05.2015 22:56:21
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #214
RE: Построение дерева иерархии или дерева комментариев
Именно для вывода я и приводил пример SQL запроса.

В SELECT запросе, где Вы перечисляете столбцы вместо ip пишите INET_NTOA(ip) AS ip.
14.05.2015 23:13:40
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #215
RE: Построение дерева иерархии или дерева комментариев
(14.05.2015 23:13:40)Admin писал(а):  Именно для вывода я и приводил пример SQL запроса.

В SELECT запросе, где Вы перечисляете столбцы вместо ip пишите INET_NTOA(ip) AS ip.

Если я так делаю, то у меня в базе (в таблице comment) значение поля id равно 0
Такой код:
if (is_numeric($_POST["parent_id"]) and is_numeric($_POST["f_parent"]))
$res=mysqli_query($db,"insert into comment (parent_id, first_parent, date, theme_id, login, INET_NTOA(ip) AS ip, message) values ('".$_POST["parent_id"]."','".$_POST["f_parent"]."','".$time."','".$theme_id."','".$mess_login."','".$user_text."')");
else $res=mysqli_query($db,"insert into comment (date, theme_id, login, message) values ('".$time."','".$theme_id."','".$mess_login."','".$user_text."')");

может быть нужно прописывать и значения INET_ATON('".$ip."') после '".$mess_login."' или все гораздо проще?



P.S.: И если добавлять INET_NTOA(ip) AS ip, то не работают древовидные комментарии, не заносится в базу значения...
(Последний раз сообщение было отредактировано 14.05.2015 в 23:49:38, отредактировал пользователь ale10ey.)
14.05.2015 23:44:59
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #216
RE: Построение дерева иерархии или дерева комментариев
Be

Я же написал в SELECT запросе, а Вы впихнули в INSERT!!! Конечно работать не будет, потому что не там меняете!

Тем более в INSERT у Вас указано 6 столбцов, но впихнуть Вы туда пытаетесь 7 значений!!!
14.05.2015 23:55:14
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #217
RE: Построение дерева иерархии или дерева комментариев
Извиняюсь за глупость, но у меня нет SELECT запроса в коде... Scratch
Во 2 файле SELECT есть:
Код:
$res=mysqli_query($db,"SELECT * FROM comment WHERE theme_id='".$theme_id."' and moderation=1 ORDER BY id");
$number=mysqli_num_rows($res);
Здесь все понятно, а насчет SELECT понятно как реализуется, но получается мне нужно создать SELECT?

Если, код:
$result = mysql_query("SELECT date, INET_NTOA(ip) AS ip FROM comment ORDER BY id DESC", $link);
прописывать, где и INSERT, то выдается ошибка.
Знаю, что просто, но туплю чего-то...
15.05.2015 00:33:09
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #218
RE: Построение дерева иерархии или дерева комментариев
Опять повторю, что все зависит от того, где Вы хотите выводить IP адреса.

Если Вы просто хотите получить все IP адреса комментариев, то такой запрос:
PHP код:
$res mysqli_query($db"SELECT INET_NTOA(ip) AS ip FROM comment ORDER BY id DESC");
while (
$arr=mysqli_fetch_array($res)) echo 'IP - '.$arr["ip"].'<br>'

Если Вы хотите выводить IP адреса непосредственно с самими комментариями на сайте, то в запросе
PHP код:
$res=mysqli_query($db,"SELECT * FROM comment WHERE theme_id='".$theme_id."' and moderation=1 ORDER BY id"); 

Вы и так уже выбрали все столбцы, т.к. указан знак "*". Далее IP адреса необходимо передать в массив $tag, и только потом выводить на экран в функции parents().

Передаем в массив $tag:
PHP код:
$tag[(int)$com["parent_id"]][] = array((int)$com["id"], $com["message"], $com["login"], $com["date"], $com["plus"], $com["minus"], $com["first_parent"], $com["ip"]); 


Вывод на экран внутри parents():
PHP код:
echo 'IP - '.long2ip($tag[$up][$i][7]); 

Здесь мы использовали PHP функцию для преобразования IP адреса - long2ip(). Это аналог SQL функции INET_NTOA();
15.05.2015 19:03:59
Найти все сообщения Цитировать это сообщение
ale10ey Не на форуме
Генерал-лейтенант
*

Сообщений: 352
У нас с: Nov 2014
Сообщение: #219
RE: Построение дерева иерархии или дерева комментариев
Здравствуйте, спасибо за ответ Yes. Я немного имел другое, но и это интересный момент...

Я решил свой вопрос. Мне необходимо было в таблицу comment добавить поле ip адреса посетителя и у меня был неправильный вывод для всех сообщений, т.е. 2470, а не 127.0.0.1 так как проверяю на локальном сервере.

В итоге int(10) сменил char(15) в таблице comment и код 1 коде выглядит так:

$res=mysqli_query($db,"insert into comment (parent_id, first_parent, date, theme_id, login, ip, message) values ('".$_POST["parent_id"]."','".$_POST["f_parent"]."','".$time."','".$theme_id."','".$mess_login."','".$_SERVER[REMOTE_ADDR]."','".$user_text."')");
else $res=mysqli_query($db,"insert into comment (date, theme_id, login, ip, message) values ('".$time."','".$theme_id."','".$mess_login."','".$_SERVER[REMOTE_ADDR]."','".$user_text."')");

В данный момент при отправке сообщения, в таблице comment ip как на скрине:
[Изображение: tid_135_comment_ip.png]

Поправьте, если что-то не так, но именно этого я и добивался, скорее всего неправильно изъяснялся.

Насчет вывода IP адреса непосредственно с самими комментариями на сайте, то в запросе:
Цитата:Передаем в массив $tag:
PHP код:
$tag[(int)$com["parent_id"]][] = array((int)$com["id"], $com["message"], $com["login"], $com["date"], $com["plus"], $com["minus"], $com["first_parent"], $com["ip"]); 


При добавлении $com["ip"] ошибок нет, но если в коде:
Вывод на экран внутри parents():
PHP код:
echo 'IP - '.long2ip($tag[$up][$i][7]); 
выдается ошибка... Scratch, как на скрине ниже:
[Изображение: tid_135_echo_error.png]

Весь код такой:
PHP код:
$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 
parents(echo 'IP - '.long2ip($tag[$up][$i][7]);).'</div><br>'

P.S.: line 115 -
PHP код:
echo parents(echo 'IP - '.long2ip($tag[$up][$i][7]);).'</div><br>'
(Последний раз сообщение было отредактировано 16.05.2015 в 00:16:54, отредактировал пользователь ale10ey.)
16.05.2015 00:15:12
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #220
RE: Построение дерева иерархии или дерева комментариев
Я же спрашивал, какой тип поля в БД у столбца ip, от этого и отталкивался. Можно конечно IP адреса как char(15) записывать, но это не оптимальное решение (занимает больше места в БД). Хотите записывать в char(15) - Ваше дело.

В начале Вы делаете правильно за исключением вывода IP адреса. Т.к. у Вас тип поля char(15), то функция long2ip() уже не нужна.

Цитата:... и только потом выводить на экран в функции parents().

Функция parents() уже имеется в коде и именно в ней выводятся все данные на экран...

Внутри уже имеющейся функции parents(), там где выводятся комментарии, логины, даты и оценки нужно добавить:
PHP код:
echo '<b>IP - '.$tag[$up][$i][7].'</b>'
16.05.2015 00:37:34
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


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


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru