Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсветка информации с последнего момента посещения
 
 автор: Рома   (14.01.2010 в 01:31)   письмо автору
 
 

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

Отследить время нахождения пользователя на сайте не проблема, но как рассредоточить это по разделам, что-то до меня не доходит. Никто не реализовывал подобную схему? Мне интересна только теория.

  Ответить  
 
 автор: DAb®o   (14.01.2010 в 02:38)   письмо автору
 
   для: Рома   (14.01.2010 в 01:31)
 

Создай таблицу дополнительнуя с полями id_tema, id_user. записи вставляются при посещении темы.
Ну соответственно если есть запись c id данной темы и данного юзера то он посещал ее.
Я бы еще удалял записи с id_tema тем которые созданы более сколькито дней назад.

  Ответить  
 
 автор: Рома   (14.01.2010 в 14:17)   письмо автору
 
   для: DAb®o   (14.01.2010 в 02:38)
 

>Создай таблицу дополнительнуя с полями id_tema, id_user. записи вставляются при посещении темы.

>Ну соответственно если есть запись c id данной темы и данного юзера то он посещал ее.
А если тема одна, а в нее постоянно добавляются записи?

>Я бы еще удалял записи с id_tema тем которые созданы более сколькито дней назад.

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

  Ответить  
 
 автор: DAb®o   (14.01.2010 в 16:14)   письмо автору
 
   для: Рома   (14.01.2010 в 14:17)
 

>>Я бы еще удалял записи с id_tema тем которые созданы более сколькито дней назад.

>Удаленные запири опять же станут отображаться не прочитанными. Я понимаю, что нужно создавать отдельную таблицу, точнее уже создал, но не получается добиться корректной работы.

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

  Ответить  
 
 автор: Loki   (14.01.2010 в 14:24)   письмо автору
 
   для: DAb®o   (14.01.2010 в 02:38)
 

А если пользователь нажимает кнопочку "отметить все как прочитанные", то что будет происходить?

  Ответить  
 
 автор: Рома   (14.01.2010 в 15:56)   письмо автору
 
   для: Loki   (14.01.2010 в 14:24)
 

изменится время последнего посещения на текущую метку времени

  Ответить  
 
 автор: Loki   (14.01.2010 в 16:08)   письмо автору
 
   для: Рома   (14.01.2010 в 15:56)
 

Вопрос был к DAb®o. В его схеме никаких меток не предусмотрено.

  Ответить  
 
 автор: Саня   (14.01.2010 в 14:29)   письмо автору
 
   для: Рома   (14.01.2010 в 01:31)
 

Запоминается время последнего визита, а в списке форумов, в ячейке "новых постов", выводить количество постов, дата создания которых больше даты последнего посещения форума юзером.

  Ответить  
 
 автор: Рома   (14.01.2010 в 15:54)   письмо автору
 
   для: Саня   (14.01.2010 в 14:29)
 

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

  Ответить  
 
 автор: Рома   (14.01.2010 в 16:01)   письмо автору
 
   для: Рома   (14.01.2010 в 15:54)
 

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

  Ответить  
 
 автор: Loki   (14.01.2010 в 16:10)   письмо автору
 
   для: Рома   (14.01.2010 в 15:54)
 

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

  Ответить  
 
 автор: Рома   (14.01.2010 в 17:58)   письмо автору
 
   для: Loki   (14.01.2010 в 16:10)
 

щас попробую

  Ответить  
 
 автор: Рома   (14.01.2010 в 19:57)   письмо автору
 
   для: Рома   (14.01.2010 в 17:58)
 

спасибо, принцип понял, авторизацию подкорректировал, остался один ньюанс. Если на сайте 12 разделов, плюс хотя бы с десяток форумов, то это на 1000 зарегеных будет 22000 записей в таблице, что сильно увеличит время запроса. Может стоит сделать ключами все поля + ключ id юзера, для более скоростного поиска или дать каждому разделу свое поле, а при открытии/закрытии нового раздела - добавлять/удалять поля, тогда каждому зарегестрированному будет по 1 строке, а не по 22. Наверное все-таки второй, да?

  Ответить  
 
 автор: Loki   (14.01.2010 в 23:51)   письмо автору
 
   для: Рома   (14.01.2010 в 19:57)
 

Я вообще делаю проще: завожу для каждого юзера сессию, куда кладу время последнего обновления темы:
$_SESSION['forum'][$theme['theme_id']]=$theme['last_post'];
в итоге просто остается проверять состояние переменной в сессии, если она есть и равна той, что в базе - тема прочитанная, иначе - нет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования