![]() |
0 Всего найдено: 29
logicerror
Сообщение
15/09/2007 17:20
Копия темы
есть новые посты или нет . Народ, подскажите пожалуйста как вообще такое реализовать. Ну как здесь на фрилансе. Комментарии горит жирным если есть сообщения которых я еще не видел, а не жирным если их нет. Как оно вообще такое делается? Заранее благодарен.
logicerror
Сообщение
15/09/2007 17:21
Копия темы
. ах ты меня преследуешь! )) я тоже думаю что не так уж и сложно... а вот как? ))
Ever
Сообщение
15/09/2007 17:25
Копия темы
. Без истерики. Вот я не прогер и знаю что несложно, а ты да и не знаешь, странно, да?
pavlick
Сообщение
15/09/2007 17:39
Копия темы
. по какому-нибудь параметру: просмотрено сообщение или нет
logicerror
Сообщение
15/09/2007 17:40
Копия темы
. ну так а пользователей дохера, и сообщений столько же... как быть...?
phozzer
Сообщение
15/09/2007 17:45
Копия темы
. Полагаю, каждое сообщение имеет порядковый номер, чем позже отправлено сообщение в топик тем большее его номер. В таблице у пользователя для каждого топика есть номер последнего просмотренного сообщения. Когда ты попадаешь на страницу «Блоги» для каждого блога сравнивается кол-во комментариев и номер последнего просмотренного тобой. По крайней мере я бы сделал так.
pavlick
Сообщение
15/09/2007 17:51
Копия темы
. и что? могу еще предложить вариант... наверняка у каждого пользователя есть айдишник. Так вот, ввести у каждого сообщения строковый параметр со списком всех пользователей, читавших сообщение... и смотреть по этому параметру.... пойдет?:)
logicerror
Сообщение
15/09/2007 17:52
Копия темы
. А кстати кол-во не обязательно сравнивать.. Я вот думаю отдельную табличку. Три поля id пользователя, id темы, id последнего просмотренного сообщ. А id сообщ чем позднее тем больше..?
phozzer
Сообщение
15/09/2007 17:54
Копия темы
. А по другому как?? Это едиственный нормальный вариант имхо. Используя этот вариант для каждого пользователя ты хранишь столько числовых записей, сколько пользователь посещал топиков за свою жизнь. Не думаю, что есть более экономный или эффективный вариант. Да и на выборку данных и определение непрочитанных сообщений при таком подходе много времени не тратится.
logicerror
Сообщение
15/09/2007 17:57
Копия темы
. Это не критика, я полностью с вами согласен ;) просто может у кого есть еще какие нибудь идеи?
phozzer
Сообщение
15/09/2007 18:02
Копия темы
. Я наверное немного сумбурно все объяснил) Смотри. Ты создал топик. Первый в нем оставил комментарий Женя. Порядковый номер его сообщения 1. Вторым ответил Павел. Порядковый номер его сообщения 2. Потом ты прокомментировал ответ Жени. 3 То есть порядковый номер не всегда совпадает с положением на странице: Женя(1) Ты(3) Павел(2). Для каждого пользователя создается отдельная таблица с двумя полями: id топика, id последнего прочитанного. Затем, когда ты заходишь на страницу «Блоги» происходит выборка кол-ва сообщений (a) для каждого топика (b). И для каждого b происходит выборка из твоей пользовательской таблицы SELECT id_последнего_прочитанного FROM logicerror WHERE id_топика=b Потом результат запроса сравнивается с а(кол-вом сообщений). Если а больше чем id_последнего_прочитанного, то комменты подсвечиваются жирным
FenixDeveloper
Сообщение
15/09/2007 20:05
Копия темы
. элементарно: когда заходит человек в тему, отмечается для него дата захода, когда заходит в следующий раз сообщения который были позже этой даты (со временем естественно) подсвечиваются. Всё. Пользуйтесь.
logicerror
Сообщение
16/09/2007 08:39
Копия темы
. не всё так просто.. по ваше схеме тема 1 16 число тема 2 17 число тема 3 18 число допустим у пользователя записано 16, так? для него новыми являются темы 2 и 3, он заходит в третью, ему записываются 18, и 17 у него уже не высвечивается как новая :(
logicerror
Сообщение
16/09/2007 08:42
Копия темы
. то есть если пользователей 1000 то в этом строковом параметре будет: 567 984 234 598 123 456 789 354 999 777 888 666 555 444 333 и так много много много.. а представляешь если тему прочитали все 1000 пользователей? причем это не только для каждой темы, а для каждого поста...
FenixDeveloper
Сообщение
16/09/2007 09:01
Копия темы
. Внимательно читайте. даты (со временем естественно) дату + время!
typhoon
Сообщение
17/09/2007 16:19
Копия темы
. Значит так. Необходимо комбинировать новые по времени (как рекомендовал Alex Martinov [FenixDeveloper]) и новые по просмотрам. Создается таблица, состоящая из id юзера, id коммента и времени просмотра. В эту таблицу по мере просмотра вставляются записи просмотренных комментов данным юзером в данное время. Если этот коммент уже просмотрен, можно ничего не вставлять, а можно и обновить дату, на выбор. А в таблицу юзера вставляется время последного захода. В таблицу комментов вставляется время создания. Теперь, надо определить, через какое время (день) коммент считается устаревшим (т.е. уже не показывается как новый). В зависимости от этого времени в самом начале запуска скрипта удаляются все записи в новой таблице старше этого времени. Запрос(ы) необходимо сформировать таким образом, чтобы показывать юзеру комменты не старше указанной даты (допустим 2 дня) и не просмотрено им еще на основе новой таблицы. Надеюсь, смысль понятен)
netrain
Сообщение
19/09/2007 10:42
Копия темы
. В любом случае мы смотрим по датам и времени создания тем и сообщений внутри тем (можно еще и по id дополнительно, на случай совпадения времени и дат для нескольких сообщений просто подстраховка, которая не потребует больших ресурсов). Все темы учитывать не стоит большой объем данных, да и зачем хранить информацию о просмотре тем 10-летней давности? Просто старые темы автоматом делаем прочитанными. Для новых (скажем, за последние 2 недели/месяц/2 месяца) ставим куки с указанием даты последнего просмотренного сообщения (если постраничный вывод, то в куки ставим только дату последнего сообщения на последней просмотренной странице, или ее id можно). Далее по куки смотрим для новых тем, какое сообщение было последним в теме и какое последним просмотрел пользователь. Отсюда делаем вывод, помечать тему или нет как прочитанную. Для зарегистрированных пользователей можно завести таблицу в БД о прочитанных сообщениях по тому же принципу. Регулярно чистим ее, удаляя старые записи (можно по крону, можно при первом заходе на сайт раз в неделю где-нибудь, как удобнее будет и что сервер позволит, чтобы не тормозило; универсальный вариант крон). При регулярных чистках данных в таблице будет не настолько много, чтобы значительно замедлить работу сайта. Заодним позволим зарегистрированным пользователям сохранять информацию о прочитанных темах вне зависимости от наличия куки на компе (могут с любого компа зайти или почистить кэш браузера на виде тем это уже не скажется). Вот и вся премудрость.
logicerror
Сообщение
13/10/2007 11:23
Копия темы
. но ведь фриланс не хранит ничего такова в кукисах..?
Adroit
Сообщение
14/10/2007 05:33
Копия темы
. Cookie: b=b; id=20397; name=Adroit; pwd=...; PHPSESSID=...; hotlog=1 Похоже, что не хранит, да, как вариант www.aspnetmania.com/Forum..
logicerror
Сообщение
03/11/2007 15:10
Копия темы
0
. не, но смотрите.. получается если у меня человечек просмотрел самую последнюю тему, то получается что он просмотрел абсолютно все темы.. её же дата позднее всех будет.. тут помоему мудрить с id надо, и куда то их записывать что ли.. я в растерянности... |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |