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]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Без описания
EuGen Администратор
Отправлено: 28 Мая, 2008 - 09:31:23
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ничего не понял. Задача была в том, чтобы отличить посещенные категории от непосещенных. Соответственно при первом посещении категории она записывается (точнее дописывается) в куки. И таким образом мы имеем список id категорий, которые юзер посетил.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 09:50:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


EuGen пишет:
Ничего не понял. Задача была в том, чтобы отличить посещенные категории от непосещенных. Соответственно при первом посещении категории она записывается (точнее дописывается) в куки. И таким образом мы имеем список id категорий, которые юзер посетил.


Все правильно, но желательно обойтись без печенюшек! НО, ведь категории постоянно пополняются новыми записями! Я тут на форуме
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 10:10:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Дело в том, что куки - один из немногих способов однозначно идентифицировать пользователя.
Альтернатива им - сессии. Можете проделать то же самое, регистрируя все в сессии. Правда нужно будет позаботиться о том, чтобы они не использовали куки (а то выйдет то же самое).
Если у Вас появляется новая категория, то проблемы я не вижу. Пока пользователь туда не зайдет, новая категория будет считаться непосещенной.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 11:08:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Так а как определить, просмотренная эта категория или нет? Может быть я недоходчиво объясняю, может быть Вы не совсем понимаете...
(Добавление)
Давайте представим с Вами схему:

(ЮЗВЕРЬ ЗАХОДИТ В КАТЕГОРИЮ)
|
(ПРОВЕРКА БЫЛА ЛИ ПРОСМОТРЕННА ЭТА КАТЕГОРИЯ,
ЕСЛИ НЕТ ПОМЕЧАЕМ ЕЁ ПРОСМОТРЕННОЙ)
|
(ЮЗВЕРЬ УХОДИТ)
|
(В ЭТУ КАТЕГОРИЮ ДОБАВЛЯЮТСЯ НОВЫЕ ЗАПИСИ)
|
(ЮЗВЕРЬ ПРИХОДИТ, И СОГЛАСНО НАШЕЙ С ВАМИ СХЕМЕ,
КАТЕГОРИЯ ОСТАЕТСЯ ПРОЧИТАННОЙ)

Хотя на самом деле это не так. Исходя из этой схемы, следует вывод, что нам нужен какой-то идентификатор, показывающий где Мы остановились, и если записей БОЛЬШЕ, чем наш последний идентификатор, то... дальше думаю объяснять не надо
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 11:30:45
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Теперь стало более понятно. У Вас проблема в том, что содержимое категории меняется, так?
Тогда можно предложить более хитрую проверку: хранить в куке не только id, но еще и версию посещенной категории. Примерно так:

- Храним категория0&версия0|категория1&версия1 ...
Соответственно в БД придется хранить текущую версию для конкретной категории (дополнительным полем).
При обработке данных, пришедших из куки, учитывать, что есть 2 разделителя - разделителя категорий и внутреннего - для версий.
При вынесении решения, посещена ли категория или нет - делать запрос в БД и сравнивать пришедшую из куки версию с версией, хранящейся в БД. Если версия пользователя меньше - НЕ добавлять, если равны - добавлять.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 11:47:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


EuGen пишет:
Соответственно в БД придется хранить текущую версию для конкретной категории (дополнительным полем).


У меня все статьи храняться в одной таблице, но у них есть поле id. Это поле подойдет в качестве текущей версии?
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 12:32:38
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет, ведь по id Вы не поймете, менялось ли содержимое с момента посещения пользователем или нет. Добавьте, например, поле category_version и при изменении категории увеличивайте его на 1.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 13:20:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


EuGen пишет:
Нет, ведь по id Вы не поймете, менялось ли содержимое с момента посещения пользователем или нет. Добавьте, например, поле category_version и при изменении категории увеличивайте его на 1.


А почему я не смогу отследить по id?
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 13:51:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Потому что при изменении содержимого id не меняется. Ну как правило, не меняется. Потому что ссылки на него могут быть в других таблицах.
Если Вы меняете - то это лишь усложняет дело. Рекомендую тогда не менять.
А версия нужна для того, чтобы понять, изменилась ли категория с конкретным id после последнего просмотра ее пользователем. Не будете же Вы весь текст сравнивать.
Или я еще чего-то не знаю?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 14:46:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Если я введу доп. поле, оно ведь будет распространяться на все записи в этой таблице? А это ведь лишние килобайты! Или я чего-то не понял?
(Добавление)
Если я введу доп. поле, оно ведь будет распространяться на все записи в этой таблице? А это ведь лишние килобайты! Так? Или я чего-то не понял?
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 15:03:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Конечно будет. Подумайте, что для Вас важнее - решить задачу (а иного способа, кроме как использовать версию, в данном случае, мне не видится), либо сэкономить место в БД.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 15:07:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


А если сделать отдельную таблицу в которой для каждой категории будет своя запись с полями catid & version?

Можно еще вопросик: на аяксе можно отдать файл пользователю? Почему я хочу использовать именно его? Да, потому, что мне нужно учитывать количество скачек.

(Отредактировано автором: 28 Мая, 2008 - 15:08:26)

 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 15:08:21
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Смысл этого действия? С точки зрения места будет еще хуже, ибо Вы будете хранить в этой таблице еще и id категорий.
Да и не думаю, что одно поле слишком отяготит имеющуюся структуру таблицы категорий.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 28 Мая, 2008 - 15:11:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


EuGen пишет:
точки зрения места будет еще хуже

Но почему же хуже? Ведь эта, вторая таблица, будет полностью фиксированной и с точки зрения структуры и с точки зрения килобайтов! Вы со мной не согласны? Ямогу посчитать:

К примеру у меня 50 категорий, все это дело занимает 50 записей, и весит 100 кб. К примеру! А если в той таблице будет 100,000 записей... и для каждой придется вставить такое поле
 
 Top
EuGen Администратор
Отправлено: 28 Мая, 2008 - 15:19:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Гм, да уж, удивили Вы меня таким вопросом ...
Советую почитать про реляционные БД, тогда все встанет на свои места, я думаю.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB