17.05.2009 → Работа → Прикрутил «Среднюю температуру по палате» на Скринотеку

<?php
$sum_votes = db_fetch_array(db_query('SELECT SUM(value) FROM {votingapi_vote}'));
$count_votes = db_fetch_array(db_query('SELECT COUNT(value) FROM {votingapi_vote}'));
$count_screen = db_fetch_array(db_query('SELECT COUNT(nid) FROM {node} WHERE type ='. "'screenshot'". ''));
$count_users = db_fetch_array(db_query('SELECT COUNT(uid) FROM {users}'));$s=$sum_votes['SUM(value)'];

$w=$count_votes['COUNT(value)'];
$c=$count_screen['COUNT(nid)'];
$u=$count_users['COUNT(uid)'];

$temp=((($s/$w)*$c)/$u)*100;

print "<p>Скриншотов в коллекции:</p>";
print "<div id=gray>" . $c . "</div>";

print "<p>Средняя температура по палате:</p>";
print "<div id=temper>" . sprintf ("%01.2f", $temp) . "&deg;C</div>";?>

Берем количество голосов вообще, делим на сумму значений (значения могут быть -1 и +1) голосов, умножаем на количество скриншотов и делим на количество пользователей. Ну и, дабы число получилось вменяемым, умножаем результат на сто.

Upd: Плохая формула. Со временем вес голоса будет нивелироваться, ибо количество голосов только растет, а сумма может и падать, или расти незначительно. Надо количество голосований вообще убирать. Буду думать дальше.

Upd 2:  Так, стоп, я все напутал. мы ведь сумму делим на количество…

Upd 3: Вот как сделаю: $temp=((($s*$c))/($u*10)) — сумму всех голосов перемножу на количество скриншотов, тем самым зададим рост температуры в зависимости и от количества скриншотов и от положительных оценок, но потом все это поделим на количество пользователей, тем самым уравновесим рост температуры. Как-то так.

http://screenoteka.ru

Поделиться
Отправить
Класснуть



Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *