Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Действия пользователей [2]
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Ничего не понял. Задача была в том, чтобы отличить посещенные категории от непосещенных. Соответственно при первом посещении категории она записывается (точнее дописывается) в куки. И таким образом мы имеем список id категорий, которые юзер посетил.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 09:50:53
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
EuGen пишет:
Ничего не понял. Задача была в том, чтобы отличить посещенные категории от непосещенных. Соответственно при первом посещении категории она записывается (точнее дописывается) в куки. И таким образом мы имеем список id категорий, которые юзер посетил.
Все правильно, но желательно обойтись без печенюшек! НО, ведь категории постоянно пополняются новыми записями! Я тут на форуме
EuGen
Отправлено: 28 Мая, 2008 - 10:10:25
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Дело в том, что куки - один из немногих способов однозначно идентифицировать пользователя.
Альтернатива им - сессии. Можете проделать то же самое, регистрируя все в сессии. Правда нужно будет позаботиться о том, чтобы они не использовали куки (а то выйдет то же самое).
Если у Вас появляется новая категория, то проблемы я не вижу. Пока пользователь туда не зайдет, новая категория будет считаться непосещенной.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 11:08:38
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
Так а как определить, просмотренная эта категория или нет? Может быть я недоходчиво объясняю, может быть Вы не совсем понимаете... (Добавление)
Давайте представим с Вами схему:
(ЮЗВЕРЬ ЗАХОДИТ В КАТЕГОРИЮ)
|
(ПРОВЕРКА БЫЛА ЛИ ПРОСМОТРЕННА ЭТА КАТЕГОРИЯ,
ЕСЛИ НЕТ ПОМЕЧАЕМ ЕЁ ПРОСМОТРЕННОЙ)
|
(ЮЗВЕРЬ УХОДИТ)
|
(В ЭТУ КАТЕГОРИЮ ДОБАВЛЯЮТСЯ НОВЫЕ ЗАПИСИ)
|
(ЮЗВЕРЬ ПРИХОДИТ, И СОГЛАСНО НАШЕЙ С ВАМИ СХЕМЕ,
КАТЕГОРИЯ ОСТАЕТСЯ ПРОЧИТАННОЙ)
Хотя на самом деле это не так. Исходя из этой схемы, следует вывод, что нам нужен какой-то идентификатор, показывающий где Мы остановились, и если записей БОЛЬШЕ, чем наш последний идентификатор, то... дальше думаю объяснять не надо
EuGen
Отправлено: 28 Мая, 2008 - 11:30:45
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Теперь стало более понятно. У Вас проблема в том, что содержимое категории меняется, так?
Тогда можно предложить более хитрую проверку: хранить в куке не только id, но еще и версию посещенной категории. Примерно так:
- Храним категория0&версия0|категория1&версия1 ...
Соответственно в БД придется хранить текущую версию для конкретной категории (дополнительным полем).
При обработке данных, пришедших из куки, учитывать, что есть 2 разделителя - разделителя категорий и внутреннего - для версий.
При вынесении решения, посещена ли категория или нет - делать запрос в БД и сравнивать пришедшую из куки версию с версией, хранящейся в БД. Если версия пользователя меньше - НЕ добавлять, если равны - добавлять.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 11:47:42
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
EuGen пишет:
Соответственно в БД придется хранить текущую версию для конкретной категории (дополнительным полем).
У меня все статьи храняться в одной таблице, но у них есть поле id. Это поле подойдет в качестве текущей версии?
EuGen
Отправлено: 28 Мая, 2008 - 12:32:38
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Нет, ведь по id Вы не поймете, менялось ли содержимое с момента посещения пользователем или нет. Добавьте, например, поле category_version и при изменении категории увеличивайте его на 1.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 13:20:12
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
EuGen пишет:
Нет, ведь по id Вы не поймете, менялось ли содержимое с момента посещения пользователем или нет. Добавьте, например, поле category_version и при изменении категории увеличивайте его на 1.
А почему я не смогу отследить по id?
EuGen
Отправлено: 28 Мая, 2008 - 13:51:08
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Потому что при изменении содержимого id не меняется. Ну как правило, не меняется. Потому что ссылки на него могут быть в других таблицах.
Если Вы меняете - то это лишь усложняет дело. Рекомендую тогда не менять.
А версия нужна для того, чтобы понять, изменилась ли категория с конкретным id после последнего просмотра ее пользователем. Не будете же Вы весь текст сравнивать.
Или я еще чего-то не знаю?
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 14:46:29
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
Если я введу доп. поле, оно ведь будет распространяться на все записи в этой таблице? А это ведь лишние килобайты! Или я чего-то не понял? (Добавление)
Если я введу доп. поле, оно ведь будет распространяться на все записи в этой таблице? А это ведь лишние килобайты! Так? Или я чего-то не понял?
EuGen
Отправлено: 28 Мая, 2008 - 15:03:22
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Конечно будет. Подумайте, что для Вас важнее - решить задачу (а иного способа, кроме как использовать версию, в данном случае, мне не видится), либо сэкономить место в БД.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 15:07:08
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
А если сделать отдельную таблицу в которой для каждой категории будет своя запись с полями catid & version?
Можно еще вопросик: на аяксе можно отдать файл пользователю? Почему я хочу использовать именно его? Да, потому, что мне нужно учитывать количество скачек.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Смысл этого действия? С точки зрения места будет еще хуже, ибо Вы будете хранить в этой таблице еще и id категорий.
Да и не думаю, что одно поле слишком отяготит имеющуюся структуру таблицы категорий.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
D1mOn
Отправлено: 28 Мая, 2008 - 15:11:29
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
EuGen пишет:
точки зрения места будет еще хуже
Но почему же хуже? Ведь эта, вторая таблица, будет полностью фиксированной и с точки зрения структуры и с точки зрения килобайтов! Вы со мной не согласны? Ямогу посчитать:
К примеру у меня 50 категорий, все это дело занимает 50 записей, и весит 100 кб. К примеру! А если в той таблице будет 100,000 записей... и для каждой придется вставить такое поле
EuGen
Отправлено: 28 Мая, 2008 - 15:19:09
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Гм, да уж, удивили Вы меня таким вопросом ...
Советую почитать про реляционные БД, тогда все встанет на свои места, я думаю.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.