Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рейтинг пользователей (попытка номер раз)
 
 автор: Sywooch   (14.10.2006 в 22:26)   письмо автору
 
 

Господа, очередные грабли.
Решил сделать, что то на подобии рейтинга активности пользователей

Подсчитуется он следующим образом:

--------------------------------------------------------------------------------
Количество написаных пользователем статей (добавляю 2 за статью)
+
Кол-во анекдотов (добавляю 1 за анекдот)
+
кол-во новостей (добавляю 1 за новость)
+
количество коментариев (по всем темам) (добавляю 0.5 за коментарий)
---------------------------------------------------------------------------------
Это уже реализовано!

Грабли вот в чем:
Как отсортировать пользователей в список по убыванию рейтинга?
---------------------
Рейтинг подсчитываю сразу перед печатью списка ( тоесть рейтинг нигде не сохраняется )

   
 
 автор: cheops   (14.10.2006 в 22:35)   письмо автору
 
   для: Sywooch   (14.10.2006 в 22:26)
 

Заведите в таблице пользователей специальное поле - увеличивайте его значение, как только пользователь добавляет новость или статью, далее при выводе пользователя сортируйте их в порядке убывания значения этого поля.

   
 
 автор: Sywooch   (14.10.2006 в 22:45)   письмо автору
 
   для: cheops   (14.10.2006 в 22:35)
 

Спасибо хеопсу за идею(хотя сам думал об этом)
Но вот вопрос как быть с тем что сайт уже действующий?
Имею ввиду вот что:
Я добавляю столбец в табличку юзера типа User_rate
При добавлении определённого контента я вынимаю значение текущего рейтинга и добавляю туда опр. виличину.
Как быть с тем что уже было добавлени?
(вручную подописывать?

   
 
 автор: Trianon   (14.10.2006 в 22:36)   письмо автору
 
   для: Sywooch   (14.10.2006 в 22:26)
 

ORDER BY ((letters*2+anecdotes + newsletters )*2+comments) DESC

   
 
 автор: Sywooch   (14.10.2006 в 23:02)   письмо автору
 
   для: Trianon   (14.10.2006 в 22:36)
 

Вот какой код в даный момент


<?
        $result 
dbquery("select * from ".PREFIX."users LIMIT 10");
        while(
$data=dbarray($result))
        {
        if (
$i == 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*$kreo $news $comment/2;
        echo 
"<div class=".$style.">".$data['user_name']." | ".$rate."</div>";
        
$i++;
        }
?>


Код выводит 10 юзеров но не сортирует их!!!!
(вариант с добавлением столбца в базу пока не реализован)
(а этот вариант по идее делает много запросов к базе данных)

   
 
 автор: Sywooch   (15.10.2006 в 00:51)   письмо автору
 
   для: Sywooch   (14.10.2006 в 23:02)
 

Господа, все немного изминилось.
Пошел по пути "Хеопса", если так можно выразится.

Создал дополнительный столбец в базе!
Вот вопрос возник какое значение лучше зделатьу столбца!?
Как правильнее добавлять (прибавлять) рейтинг?

   
 
 автор: NIK   (15.10.2006 в 13:06)   письмо автору
 
   для: Sywooch   (15.10.2006 в 00:51)
 

смотря какие значения ты будешь туда записывать. Если что-то типа 1, 100, 200 - INT. Если допустим "Рейтинг: 100" - то VARCHAR.

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

   
 
 автор: cheops   (15.10.2006 в 13:40)   письмо автору
 
   для: Sywooch   (15.10.2006 в 00:51)
 

Лучше ориентироваться на значение INT, добавлять значения можно при помощи запроса
UPDATE tbl SET field = field + 5 WHERE id_user = 5

Запрос увеличивает значение поля field таблицы tbl для пользователся с ключём 5.

   
 
 автор: Sywooch   (15.10.2006 в 23:13)   письмо автору
 
   для: cheops   (15.10.2006 в 13:40)
 

Спасибо!!!
Я так и сделал + еще пределал значек статуса при выводе списка .
Работает как часы.

Еще раз всем спасибо :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования