Подскажите принцип работы форума

12
Z
На сайте с 30.01.2008
Offline
126
2566

Хочу написать свой мини-форум, но стоит небольшая загвоздка.

Я не могу логически понять, как сделать следующее:

если человек прочитал тему, то, допустим, иконка становится другая, текст не жирный

если человек еще не читал тему, то иконка другая, а текст жирный.

За счет чего это делается???

Сапа отдыхает (http://trustlink.ru/registration/104620) Best'овый портал для веб-мастеров (http://iwsm.ru) Ответы по wordpress (http://iwsm.ru/blog/show/bokovoe-soderzhimoe-i-poleznie-elementi-menyu-v-wordpress)
S
На сайте с 01.11.2009
Offline
8
#1

сам хоть понял что спросил?:)

DeveloperRu
На сайте с 27.02.2009
Offline
72
#2
zsaz:
Хочу написать свой мини-форум, но стоит небольшая загвоздка.
Я не могу логически понять, как сделать следующее:
если человек прочитал тему, то, допустим, иконка становится другая, текст не жирный
если человек еще не читал тему, то иконка другая, а текст жирный.

За счет чего это делается???

если подумать - то информация о просмотрах должна где-то хранится

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

при создании списка тем информация из этой таблицы анализируется и в соответствии с ней делаются разными иконки или толщина названия темы

Ответы на вопросы (http://telenok.com)
Z
На сайте с 30.01.2008
Offline
126
#3

естественно понял:)

Ладно попробую еще раз.

Как узнать, прочитана данная тема пользователем или нет.

В какую таблицу, переменную или еще куда заносится эта информация??

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

zsaz добавил 11.11.2010 в 06:39

DeveloperRu:
если подумать - то информация о просмотрах должна где-то хранится

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

при создании списка тем информация из этой таблицы анализируется и в соответствии с ней делаются разными иконки или толщина названия темы

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

DeveloperRu
На сайте с 27.02.2009
Offline
72
#4
zsaz:
естественно понял:)

Ладно попробую еще раз.

Как узнать, прочитана данная тема пользователем или нет.
В какую таблицу, переменную или еще куда заносится эта информация??

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

zsaz добавил 11.11.2010 в 06:39


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

почему много? ну самый простой вариант - такие столбцы

ID ID_USER ID_TOPIC

информация в эту таблицу заносится тогда. когда пользователь запросил скрипт сообщений ветки - если запросил, значит просматривает и мы это фиксируем в таблице

pikasso
На сайте с 27.01.2008
Offline
150
#5

Хех, если Вы не можете понять такую простую вещь, то представляю себе какой получится конечный продукт ;)

DV
На сайте с 01.05.2010
Offline
644
#6

Не надо через базу, эх и нагрузка будет при каждой отдаче форумлиста!

Что-то там в сторону кукис надо думать...

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Orangesoda
На сайте с 22.08.2010
Offline
17
#7

1). В таблице с темами должна быть дата последнего сообщения или эту даты брать из таблицы сообщений.

2). В таблице с пользователями должна быть дата последнего входа в систему

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

Или можно сделать таблицу связей как предлагает DeveloperRu, так проще, но места она занимает больше.

pikasso,

Пусть напишет один раз, чтобы больше этого не делать.

Master812
На сайте с 23.12.2007
Offline
142
#8
zsaz:
Хочу написать свой мини-форум, но стоит небольшая загвоздка.
Я не могу логически понять, как сделать следующее:
если человек прочитал тему, то, допустим, иконка становится другая, текст не жирный
если человек еще не читал тему, то иконка другая, а текст жирный.

За счет чего это делается???

zsad, я бы сделал МАССИВ из куков, в котором хранил бы id прочитанных тем и при каждой загрузке проверял есть ли id в массиве или нет. Если нет, то иконка другая, сообщающая о непрочитанном сообщении, если есть - то обычная. А при открытии темы, в массив куков записывался бы ее id, чтобы в следующий раз она не светилась как новая. Так вроде делают в некоторых известных движках.

Но так же в движках есть еще и куки с именем "time", в которых храниться последнее время захода пользователя на форум. А при открытии категории, например, как на этом форуме категория "Вебстроительство" выделяются только новые темы, а те старые даже если вы их НЕ смотрети выделяться не будут. Так вроде и сделано в этом форуме.

Так нагрузки на сервер незначительные, т.к. данные о просмотренных темах и времени последнего захода храняться в куках а не в БД твоего сервера.

Нагрузки на сервер минимальны, так как данные храняться у пользователя на компе а не в БД на сервере.

raspberry pi сайт ( https://4raspberrypi.ru/ ) и orange pi сайт ( https://orangepi.su/ ) и новостной движок ( https://generalscript.ru/ )
Dreammaker
На сайте с 20.04.2006
Offline
570
#9
Master812:
я бы сделал МАССИВ из куков, в котором хранил бы id прочитанных тем и при каждой загрузке проверял есть ли id в массиве или нет.

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

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

Master812
На сайте с 23.12.2007
Offline
142
#10
Dreammaker:
а как быть, если я в день просматриваю сотни страниц на форуме? Таскать с собой гигансткую куку.

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

Для этого есть еще одна кука $_COOKIE['time'], а имя массива просмотренных тем в куке можно назвать например tema["time"][id_темы] и в случае, когда юзер зайдет на форум еще раз, можно удалять ту часть массива в куке с именем тема, в котрой ["time"] меньше $_COOKIE['time']. Вообщем делайте две куки: в одной время последнего входа, в другой массив кукес с id просмотренных тем.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий