|
|
|
| Господа, очередные грабли.
Решил сделать, что то на подобии рейтинга активности пользователей
Подсчитуется он следующим образом:
--------------------------------------------------------------------------------
Количество написаных пользователем статей (добавляю 2 за статью)
+
Кол-во анекдотов (добавляю 1 за анекдот)
+
кол-во новостей (добавляю 1 за новость)
+
количество коментариев (по всем темам) (добавляю 0.5 за коментарий)
---------------------------------------------------------------------------------
Это уже реализовано!
Грабли вот в чем:
Как отсортировать пользователей в список по убыванию рейтинга?
---------------------
Рейтинг подсчитываю сразу перед печатью списка ( тоесть рейтинг нигде не сохраняется ) | |
|
|
|
|
|
|
|
для: Sywooch
(14.10.2006 в 22:26)
| | Заведите в таблице пользователей специальное поле - увеличивайте его значение, как только пользователь добавляет новость или статью, далее при выводе пользователя сортируйте их в порядке убывания значения этого поля. | |
|
|
|
|
|
|
|
для: cheops
(14.10.2006 в 22:35)
| | Спасибо хеопсу за идею(хотя сам думал об этом)
Но вот вопрос как быть с тем что сайт уже действующий?
Имею ввиду вот что:
Я добавляю столбец в табличку юзера типа User_rate
При добавлении определённого контента я вынимаю значение текущего рейтинга и добавляю туда опр. виличину.
Как быть с тем что уже было добавлени?
(вручную подописывать? | |
|
|
|
|
|
|
|
для: Sywooch
(14.10.2006 в 22:26)
| | ORDER BY ((letters*2+anecdotes + newsletters )*2+comments) DESC | |
|
|
|
|
|
|
|
для: Trianon
(14.10.2006 в 22:36)
| | Вот какой код в даный момент
<?
$result = dbquery("select * from ".PREFIX."users LIMIT 10");
while($data=dbarray($result))
{
if ($i % 2 == 0)
{
$style= "number_2";
} else {
$style= "number_1";
}
$humor = dbrows(dbquery("select humor_id from ".PREFIX."humor where humor_name='".$data['user_id']."'"));
$kreo = dbrows(dbquery("select kreo_id from ".PREFIX."kreo where kreo_name='".$data['user_id']."'"));
$news = dbrows(dbquery("select news_id from ".PREFIX."news where news_name='".$data['user_id']."'"));
$comment = dbrows(dbquery("select comment_id from ".PREFIX."comments where comment_name='".$data['user_id']."'"));
$rate = $humor*2 + $kreo + $news + $comment/2;
echo "<div class=".$style.">".$data['user_name']." | ".$rate."</div>";
$i++;
}
?>
|
Код выводит 10 юзеров но не сортирует их!!!!
(вариант с добавлением столбца в базу пока не реализован)
(а этот вариант по идее делает много запросов к базе данных) | |
|
|
|
|
|
|
|
для: Sywooch
(14.10.2006 в 23:02)
| | Господа, все немного изминилось.
Пошел по пути "Хеопса", если так можно выразится.
Создал дополнительный столбец в базе!
Вот вопрос возник какое значение лучше зделатьу столбца!?
Как правильнее добавлять (прибавлять) рейтинг? | |
|
|
|
|
|
|
|
для: Sywooch
(15.10.2006 в 00:51)
| | смотря какие значения ты будешь туда записывать. Если что-то типа 1, 100, 200 - INT. Если допустим "Рейтинг: 100" - то VARCHAR.
лучше имхо выбрать первый вариант с числами. Ибо будет легче прибавлять рейтинг - сначала выбираешь текущий рейтинг, потом прибаляешь к нему сколько тебуется, и обновляешь его в БД. | |
|
|
|
|
|
|
|
для: Sywooch
(15.10.2006 в 00:51)
| | Лучше ориентироваться на значение INT, добавлять значения можно при помощи запроса
UPDATE tbl SET field = field + 5 WHERE id_user = 5
|
Запрос увеличивает значение поля field таблицы tbl для пользователся с ключём 5. | |
|
|
|
|
|
|
|
для: cheops
(15.10.2006 в 13:40)
| | Спасибо!!!
Я так и сделал + еще пределал значек статуса при выводе списка .
Работает как часы.
Еще раз всем спасибо :) | |
|
|
|