Это лучше подходит для базы данных, чем для PHP. Добавьте таблицу users_points
с уникальным индексом (user_id,login_date)
. Пример данных:
user_id | login_date
======================
19746 | 2010-09-02
19746 | 2010-09-03
Затем при каждом входе в систему отметьте, что пользователь вошел в эту дату (если строка уже существует, индекс предотвратит дублирование):
INSERT IGNORE INTO `users_points` (`user_id`,`login_date`) VALUES (19746,CURDATE())
И чтобы получить количество баллов:
SELECT COUNT(*) FROM `users_points` WHERE `user_id` = 19746
Это также хорошо, что у вас есть список дней, когда пользователь вошел в систему, на случай, если вы измените критерии и захотите провести пересчет.
user_id - INT
, login_date - DATE
, есть пригодный для использования индекс, поэтому вставка и выбор должны быть быстрыми, и таблица будет относительно небольшой даже при огромном количестве пользователей.
Если вы настаиваете на сохранении пользовательской оценки в каком-либо месте (или, возможно, вы хотите получить ее вместе с другими пользовательскими данными), вы можете сделать это при входе в систему:
- запустить
insert ignore
- запустить
select count
- сохранить результат в столбце таблицы
users
.