Автоматическое обновление в DB

Vorobyov1996

Новичок
Привет всем! Хочу сделать систему рейтинга на проекте! Нужно как то организовать такую вещь: за действия на сайте добавлять несколько единиц рейтинга, за каждое действия свое количество единиц(Это я могу). А как сделать так, что бы если допустим количество рейтинга от 100 до 200, то получался один статус пользователя, а когда стало более 200 единиц рейтинга, то чтобы статус(другой столбец в MySql) обновлялся автоматически.

P. S. Я конечно всегда могу достать из базы рейтинг, сравнить и присвоить нужный статус, но можно ли это сделать автоматически?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Vorobyov1996, можно, но не нужно. Рейтинги надо хранить отдельно.
 

Vorobyov1996

Новичок
@c0dex Спасибо за ответ) И все же, как я понял автоматически обновить статус невозможно? А если возможно, то как? Есть какие нибудь функции MySql чтобы один столбец зависел от другого? Или это возможно только через код php?
 

Kotofey

FloodMaster.
@c0dex Спасибо за ответ) И все же, как я понял автоматически обновить статус невозможно? А если возможно, то как? Есть какие нибудь функции MySql чтобы один столбец зависел от другого? Или это возможно только через код php?
Попробуй тригеры mysql
 

HORO

Новичок
Можно присваивать нужный статус в select
Можно написать event on schedule every и обновлять статусы с некой переодичностью...
Можно триггер
 
Последнее редактирование:

Adelf

Administrator
Команда форума
Пересчитывать статус, после каждого обновления рейтинга. У себя в PHP коде, там это всего одно место. Не люблю когда логику домена выносят в триггеры всякие.
 

Vorobyov1996

Новичок
@Vorobyov1996, уфф, ты можешь сделать триггер, и им обновлять идентификатор статуса у юзера. Как сейчас у тебя там все работает я не знаю, но мне кажется, что ты что-то делаешь не так.

http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
Да, скорее всего, я делаю что-то не парвильно, а есть подобный твоему источнику, только на русском языке?
 

HORO

Новичок
Первый вариант в запросе можно выбрать нужный статус из таблицы статусов
2 и 3 это создать один раз event или trigger
4 в коде php когда кол-во баллов обновляешь можно и статус обновлять (почти тоже самое что триггер)

я бы скорее всего сделал либо 1, либо 4
 

Vorobyov1996

Новичок
Первый вариант в запросе можно выбрать нужный статус из таблицы статусов
2 и 3 это создать один раз event или trigger
4 в коде php когда кол-во баллов обновляешь можно и статус обновлять (почти тоже самое что триггер)

я бы скорее всего сделал либо 1, либо 4
Спасибо за все ответы) Я решил, что буду делать триггер!) НО возникли сложности. Каждый статус это как диапазон рейтинга, например: НОВИЧОК: от 100 до 200 единиц рейтинга. Но я не знаю как сделать что то типо switch, то есть при обновлении рейтинга, чтобы понять какой статус ставить, если от 200 до 300, то поставить значение "ПРОДВИНУТЫЙ". Как это реализовать?
 

Adelf

Administrator
Команда форума
Молодец. Вот тебе и первая проблема неправильного выбора. Надо знать дополнительный язык программирования.
 

Vorobyov1996

Новичок
Молодец. Вот тебе и первая проблема неправильного выбора. Надо знать дополнительный язык программирования.
Аааа. Ты прав. Но учиться надо((. Знаешь как обойти мне мою проблему? Или норм источник на русском где учат mySql (и триггерам тож ессесно?)))
 

Adelf

Administrator
Команда форума
[ИМХО]Триггеры - это из эпохи когда логику писали на расширениях SQL - PL/SQL, T-SQL и т.д. Эпоха толстых клиентов. Забудь о них. [/ИМХО]
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Сделать 1 подзапрос к таблице с статусами, чтобы выбрать user.rating BETWEEN status.start_points AND status.end_points так сложно? Пересчитать рейтинг при апдейте юзера через php?

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

Vorobyov1996

Новичок
Сделать 1 подзапрос к таблице с статусами, чтобы выбрать user.rating BETWEEN status.start_points AND status.end_points так сложно? Пересчитать рейтинг при апдейте юзера через php?

Нет, ты выбрал то, чнго вообще не знаешь и сейчас будешь задавать еще кучу вопросов нам, чтобы мы сделали за тебя, дали примеры, и прочее. Зачем?
Моя логика: Я давно "прячусь" от триггеров, и если я и сейчас буду прятаться, то это капец))
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Vorobyov1996, твоя логика хорошая, только перед тем как задавать вопрос, надо потрахаться, а потом уже писать, что не вышло.
 
Сверху