PDA

Просмотр полной версии : новые сообщения в форуме


user356
23.10.2005, 17:06
Надо, чтоб при просмотре топиков отображалось, есть ли новые сообщения в них, но как это сделать я чё-та не представляю. :confused:

Если для каждого юзера в базе данных хранить id тех сообщений, которые он видел, то размеры этой б/д будут огромны. :(

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

Так как же это, все-таки делается???

Skubent
24.10.2005, 14:36
Если хранить id не сообщений, а веток, то будет несколько проще :).

maelstorm
24.10.2005, 15:36
Skubent: а поподробней низя?

Skubent
24.10.2005, 15:48
Гхм. Неоптимизированный вариант, думать лениво.
Таблица:
CREATE TABLE view_topic (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INT,
topic_id INT,
view_time DATETIME)

При просмотре юзером топика :
"UPDATE view_topic SET view_time =".date("Y-m-d H:i:s")."WHERE user_id=$user_id AND topic_id=$topic_id"

При показе топиков:
SELECT topic_id FROM view_topic, topics_table WHERE user_id=$user_id AND topic_last_post>view_time - это не читанные
и
SELECT topic_id FROM view_topic, topics_table WHERE user_id=$user_id AND topic_last_post<=view_time - это читанные

Ну, красотищщу уже сами наводите...

juggy
25.10.2005, 20:03
в куке хранится время последнего визита в форум и сравнивается при момощи count(*) where date>$cookieTime

Constantine
25.10.2005, 23:27
COUNT()? А не проще запоминать дату последнего ответа в форуме/топике и уже её сравнивать с куки? ;)

juggy
26.10.2005, 10:57
count(*) вроде быстрее будет.

Skubent
26.10.2005, 11:33
count() работает быстрее обычного селекта только если нет условий.