Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187

Как сделать проверку, прочитана ли тема?

31.05.2014, 11:09. Показов 2095. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу форумный движок на PHP + MySQL
Как реализовать проверку, прочитана ли тема или форум пользователем?

Если хранить такую информацию в куках, то есть проблема переполнения, а если в БД, то будет очень много записей в таблице...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2014, 11:09
Ответы с готовыми решениями:

Кириллица в консоли (прикрепленная тема прочитана)
Здравствуйте. Пожалуйста, помогите понять, в чем может быть ошибка. В консоли вместо кириллицы выводятся непонятные символы. Варианты...

Php mysqli как сделать вывод из базы в массив и сделать проверку на сходство
Здравствуйте, подскажите пожалуйста как сделать что-то подобное. Есть база данных В базе таблица типа: (название 1 столба) - notes ...

как сделать проверку?
имеется 2 кнопки ButtonIchDanClick и ButtonProdClick, как сделать условие, а именно пока не нажата кнопка ButtonIchDanClick мы не сможем...

18
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
31.05.2014, 11:26
В куках однозначно не вариант(другой комп, браузер и тю-тю). Что касается места в таблице ну сколько занимает 0 либо 1 в битах?
0
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
31.05.2014, 11:29  [ТС]
В таблице планирую сделать такую структуру:
user_id - INT (11) - ID пользователя
forum_id - INT (11) - ID форума
topic_id - INT (11) - ID темы
status - INT (1) - Статус (0 - непрочитано, 1 - прочитано)
date - INT (25) - Дата добавления (записывается результат PHP функции time(), чтобы потом удалять старые записи)
0
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
31.05.2014, 11:39
Если экономить место тогда уж BIT а не INT для `status` и для `date` имхо луче DATE.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
31.05.2014, 11:53
Цитата Сообщение от WebProgrammer1 Посмотреть сообщение
Пишу форумный движок на PHP + MySQL
Как реализовать проверку, прочитана ли тема или форум пользователем?
В таблице с темами создать поле "прочитавшие юзеры", куда записывать ID всех пользователей, которые уже прочитали данную тему. При добавлении\обновлении информации в топике - чистить это поле.
1
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
31.05.2014, 13:07  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
куда записывать ID всех пользователей, которые уже прочитали данную тему
А как записывать, сериализовать массив?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
31.05.2014, 13:58
Цитата Сообщение от WebProgrammer1 Посмотреть сообщение
А как записывать, сериализовать массив?
PHP
1
2
3
4
5
6
7
8
9
10
<?
$a = array(1, 2, 3);
echo "<pre>Исходный массив:\r\n";
print_r($a);
echo "\r\nСериализованный массив, который удобно хранить в БД:\r\n";
$b = serialize($a);
print_r($b);
echo "\r\nВозвращаем массив в исходное состояние:\r\n";
$c = unserialize($b);
print_r($c);
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Исходный массив:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
 
Сериализованный массив, который удобно хранить в БД:
a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
Возвращаем массив в исходное состояние:
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
1
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
31.05.2014, 20:45  [ТС]
Сделать проверку прочитанности темы вроде получилось... А как делать проверку прочитанности форума?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
31.05.2014, 20:57
Цитата Сообщение от WebProgrammer1 Посмотреть сообщение
А как делать проверку прочитанности форума?
Это как?
0
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
31.05.2014, 22:59  [ТС]
Это как?
Как сделано в PhpBB например... На главной странице форума отображается список форумов (разделов), если он прочитан, то рядом выводится одна иконка, если не прочитан - другая
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
31.05.2014, 23:19
Цитата Сообщение от WebProgrammer1 Посмотреть сообщение
На главной странице форума отображается список форумов (разделов), если он прочитан, то рядом выводится одна иконка, если не прочитан - другая
Ну что значит прочитан раздел? Это когда прочитаны все его темы что ли? Ну так и проверять, если прочитаны все темы то одно, если не все то другое...
0
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
31.05.2014, 23:24  [ТС]
Это когда прочитаны все его темы что ли?
Да
Ну так и проверять, если прочитаны все темы то одно, если не все то другое...
Нужно будет получить SQL запросом поле с массивом прочитавших, потом преобразовать его в нормальный вид, проверить... а если в разделе 10.000 тем, а на странице выводится например, 20 разделов... для каждой темы каждого раздела придётся так делать.
Не слишком затратно по ресурсам?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
31.05.2014, 23:46
Цитата Сообщение от WebProgrammer1 Посмотреть сообщение
Не слишком затратно по ресурсам?
Ну а как еще Вы собираетесь проверять, перечитал ли пользователь все 10.000 тем...

Либо точно так же как и с темами, сделать для раздела такое же поле с прочитавшими. И считать что раздел прочитан уже после того как пользователь туда зашел, не обращая внимание на то прочитал ли он все темы или нет...
0
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
01.06.2014, 10:25  [ТС]
Ну а как еще Вы собираетесь проверять, перечитал ли пользователь все 10.000 тем...
Неужели в других движках так же сделано?

И считать что раздел прочитан уже после того как пользователь туда зашел, не обращая внимание на то прочитал ли он все темы или нет...
Попробую пока так
0
38 / 38 / 13
Регистрация: 22.07.2013
Сообщений: 197
03.06.2014, 10:08
Я б такое ещё предположил:
сделать таблицу последних визитов юзера на определённые ресурсы.

То есть первичный ключ, содержащий какой-нибудь хэш или UID, однозначно определяющий ресурс (форум, топик, статья и т.п.), id юзера и штамп его последнего визита туда.

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

Должно быть компактно, быстро и, что немаловажно, без замусоривания таблиц постов/топиков ненужной там инфой. При необходимости можно чистить устаревшие визиты.
1
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
03.06.2014, 22:58  [ТС]
сделать таблицу последних визитов юзера на определённые ресурсы.
Как вариант можно попробовать...

Добавлено через 36 секунд
но опять вопрос, как проверять прочитанность целого раздела?
0
38 / 38 / 13
Регистрация: 22.07.2013
Сообщений: 197
04.06.2014, 10:07
Определиться с тем, по каким критериям ты считаешь раздел прочитанным, и вперёд.
0
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
04.06.2014, 11:51  [ТС]
Определиться с тем, по каким критериям ты считаешь раздел прочитанным, и вперёд.
Хотелось, чтобы раздел считался прочитанным, если прочитаны все темы в нём.
0
38 / 38 / 13
Регистрация: 22.07.2013
Сообщений: 197
04.06.2014, 16:33
Ну вот так и вычисляй. + кэширование и инвалидация кэша при обновлении сабжа.
А как готовые движки с этим сравляются, не смотрел?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2014, 16:33
Помогаю со студенческими работами здесь

Как сделать проверку if ... then
Собственно как сделать проверку такого типа , if нажали картинку1 then .... if нажали картинку2 then ... ? что то я в ступоре не...

Как сделать проверку
Здравствуй, делаю лабку крестики-нолики, написал код, но пару трабл. 1) что-то не могу добавить проверку на буквы, т.е. когда вводишь...

Как сделать проверку
Всем привет. Вот есть проверка на пустоту данных. if((nameVal) &amp;&amp; (msg)){ socket.emit( 'message', { name: nameVal, message: msg } )};...

Как сделать проверку ?
Алгоритм Хаффмана . При при кодировании, если ввожу такую строку &quot;kkkkkkk&quot;, то по идее должно выдавать ошибку о том, что дерево не может...

как сделать проверку
мне необходимо сделать такую проверку: Я ввожу текст в Edit и если в папке Saves есть папка с таким именем то (и дальше там то что мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
ПЛИС
zxcha1ka_ 27.01.2026
AHDL Разработать программы для синтеза следующих устройств: 1. Параллельного регистра 4-х разрядного с синхронной загрузкой и асинхронным сбросом (обнулением); Пoмoгитe пoжaлyйстa
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru