Легкий или лучший способ сделать это?

Я постоянно работаю над сайтом (который состоит из cms с форумом), и я хочу дать каждому пользователю точки для выполнения определенных задач (++ everytime), которые в конечном итоге должны дать им звание.

Например, если пользователь сделал сообщение, он получил бы 5 очков, если бы пользователь отправил нить / тему, они получили бы 20 очков и так далее, и ряды были бы похожи на то, что точки выше M и ниже, чем в MX, они бы R-ранг и т. д.

M = минимальные точки, необходимые для получения ранга.

MX = Максимальные точки, необходимые для получения ранга.

R = Ранг (например, Beginner, Master и т. Д.).

Надеюсь, что все ясно, его немного напоминает традиционная система форумов, в которой указаны ваши точки за сообщения, которые дадут им название / рейтинг.

Я в настоящее время храню точки в базе данных MySQL и назначая Rank через PHP с такими утверждениями:

if ($points > 0 && < 100) { $rank = 'Beginner'; } 

Это их класс, библиотека, функция, формула, метод; вы можете предложить, что могло бы сделать это проще или лучше, как вы можете думать?

Ура!

Вам не нужно хранить как минимальные, так и макс. (Если значения точки для ваших рангов не являются смежными, я полагаю.) Я бы сделал это, поставив ваши ряды в массив, индексированный значением min для этого ранга, в обратном порядке:

 $ranks = array( 500 => 'Cthuloid', 250 => 'Veteran', 100 => 'Beginner', 50 => 'Noob' ); 

Затем просто напишите цикл короткого замыкания, чтобы найти первый ранг, который больше или равен счету пользователя:

 function getRankOfScore($score) { foreach ($ranks as $value => $name) { if ($score >= $value) { return $name; } } return 'Unranked'; } 

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

Я не думаю, что вы спрашивали. Только мои два цента.

EDIT : Во втором взгляде я вижу, что в этой статье нет ничего, чтобы предположить, что вы не делали этого в первую очередь. Не стесняйтесь меня игнорировать.