Статистика как на тапках

PheRum

Легенда
PHP:
// BEGIN last 10.
if($bb_cfg['t_last_added_num'])
{
 
    if (!$last_added = $datastore->get('last_added'))
    {
        $datastore->update('last_added');
        $last_added = $datastore->get('last_added');
    }
 
 
    $template -> assign_vars(array(
        'LAST_ADDED_ON' => true,
    ));
 
    $last_added = $datastore->get('last_added');
    foreach ($last_added as $last_add)
    {
        $template -> assign_block_vars('lastAdded',array(
            'TITLE' => $last_add['topic_title'],
            'TOPIC_ID' => $last_add['topic_id'],
            'FORUM' => $last_add['forum_name'],
            'FORUM_ID' => $last_add['forum_id'],
            'POSTER' => profile_url(array('username' => $last_add['username'], 'user_rank' => $last_add['user_rank'])),
            'POSTER_ID' => $last_add['user_id'],
            'TORRENT_TIME' => bb_date($last_add['reg_time'], 'd-M', 'false'),
 
        )) ;
    }
}
// END last 10
 
 
// BEGIN TopDownloaded
if($bb_cfg['t_top_downloaded'])
{
    if (!$top_downloaded = $datastore->get('top_downloaded'))
    {
        $datastore->update('top_downloaded');
        $top_downloaded = $datastore->get('top_downloaded');
    }
 
 
    $template -> assign_vars(array(
        'TOP_DOWNLOADED_ON' => true,
    ));
 
    foreach ($top_downloaded as $top_download)
    {
        $template -> assign_block_vars('TopDownloaded',array(
            'TITLE' => $top_download['topic_title'],
            'TOPIC_ID' => $top_download['topic_id'],
            'FORUM' => $top_download['forum_name'],
            'FORUM_ID' => $top_download['forum_id'],
            'POSTER'        => profile_url(array('username' => $top_download['username'], 'user_rank' => $top_download['user_rank'])),
            'POSTER_ID' => $top_download['user_id'],
            'COMPLETED' => $top_download['complete_count'],
            'TORRENT_TIME' => bb_date($top_download['reg_time'], 'd-M', 'false'),
        )) ;
    }
}
// END TopDownloaded
 
G

Gemini_13

Гость
В build_stats.php неверный запрос присутствует. Он подсчитывает обьем активных раздач не уникальных, а включая их повторы.
PHP:
    //active torrents begin
    $sql = 'SELECT COUNT(DISTINCT tor.topic_id) AS tt , SUM(tor.size) AS ts
            FROM '. BB_BT_TRACKER .'  tr , '. BB_BT_TORRENTS .' tor
            WHERE tr.topic_id = tor.topic_id';
    $row = DB()->fetch_row($sql);
    $data['active_tor'] = number_format($row['tt']);
    $data['active_tor_size'] = $row['ts'];
    //active torrents end
Думал-думал и не придумал, как заставить считать размер раздач без их повторов. Прошу помощи :(
 
G

Gemini_13

Гость
druid, сделай такой запрос:
Код:
SELECT tor.topic_id AS tt , tor.size AS ts
            FROM '. BB_BT_TRACKER .'  tr , '. BB_BT_TORRENTS .' tor
            WHERE tr.topic_id = tor.topic_id
DISTINCT фильтрует уники по topic_id, а вот сумма обьемов раздач не фильтруется и суммируется
 
G

Gemini_13

Гость
Basilevs, не-не, я не о о повторах релизов, как твковых, а то, что сам запрос дублирует в ответе раздачи. вот сколько пиров на раздаче, сколько раз она дублируется вна выходе после запроса. Если 1 сид - запись 1, но если их 4, то размер раздачи будет суммироватся 4 раза. в конечном итоге мы получаем не обьем активных раздач, а нечто левое.
 
G

Gemini_13

Гость
druid, не, немного не так меня поняли. я выше попвтался обьяснить.

topic_id одинаковый, а вот юзеры разные
 

druid

Пользователь
Первое решение навскидку:

Код:
SELECT COUNT(tor.topic_id) AS tt , SUM(tor.size) AS ts
            FROM '. BB_BT_TORRENTS .' tor
            WHERE tor.topic_id IN (SELECT tr.topic_id FROM '. BB_BT_TRACKER .' tr)

оно не очень красивое, возможно позже на ум придет и более изящное решение
 
G

Gemini_13

Гость
druid, та вот мне такое тоже приходило... но именно по той причине, что не самое лучшее решение я его откинул... может меня осенит, чет придумаю тоже.
 
Сверху