Автор Тема: [Нужна помощь] Статистика полученных бонусов  (Прочитано 248 раз)

0 Пользователей и 1 Гость просматривают эту тему.

MexaN1KАвтор темы

  • *
  • Оффлайн
  • Награды Более 8 лет на форуме Более 100 сообщений Благодарность от форума Более 10 созданных тем
  • Дата регистрации: Янв. 2016
  • Возраст: 32
  • Сообщений: 106
  • Страна: by
  • Поблагодарили: 88 раз(а)
  • Репутация +2/-0
  • Пол: Мужской
  • Дата рождения:
    1991-12-17
Всем привет!
Кто может помочь с выводом информации в общую и статистику в админке по модулю ежедневный бонус FastCore.

В открытой статистике:
  • Количество полученных бонусов
  • Сумма полученных бонусов

В админке статистике:
  • Общее количество полученных бонусов
  • Сумма полученных бонусов
  • Количество полученных бонусов за 24 часа
  • Сумма полученных бонусов за 24 часа
  • Сколько уникальных бонусов получено

P.s. Буду очень признателен если сразу в эту тему.  :clap:
a:0:{}
 

shans5

  • *
  • *
  • Оффлайн
  • Награды Более 8 лет на форуме За 1500 созданных тем Репутация более 75 более 4000 сообщений Топ 10 по сообщениям Топ 10 по созданным темам Бывает груб к участникам форума. За время в онлайне на форуме
  • Дата регистрации: Сен. 2015
  • Расположение: Регион 58
  • Возраст: 44
  • Сообщений: 4868
  • Страна: ru
  • Поблагодарили: 1338 раз(а)
  • Репутация +92/-10
  • Пол: Мужской
  • Всё только начинается !!!
  • Дата рождения:
    1979-06-30
[Нужна помощь] Статистика полученных бонусов
« Ответ #1 : 14 Декабря 2023, 23:03:22 »
1) количество полученных бонусов определяем по ID

<?PHP
$kol = $db->query("SELECT * FROM db_bonus ORDER BY `id` DESC LIMIT 1")->fetchArray();
?>
<?=$kol["id"];?>

2)Сумма всех бонусов. По дефолту бонус допустим 1 раз в 24 часа.  Соответственно бонусы ранее-удаляются.
Сумма тоже удаляется. По этому делаем колонку в стате и пишем туда сумму:

а) Делаем запрос в базу

ALTER TABLE `db_stats` ADD `kolvo` FLOAT(10,2) NOT NULL DEFAULT '0.00'

б)  вывод инфы:

<?PHP
$kolvo = $db->query("SELECT * FROM db_stats WHERE id = 1")->fetchArray();
?>
<?=$kolvo["kolvo"];?>

в)  Чтоб сумма записывалась в базу. В файле pages/user/bonus.php

После: # Зачилсяем бонус   
Добавляем:

$db->query("UPDATE db_stats SET `kolvo` = `kolvo` + '$sum' WHERE `id` = 1");

3) Смотри выше
4) Смотри выше
5) Количество бонусов за 24 часа
<?PHP
$numbon = $db->query('SELECT * FROM `db_bonus`')->numRows();
?>
<?=$numbon;?>

6) Сумма за 24 часа

<?PHP
 $numb = $db->query('SELECT SUM(sum) FROM `db_bonus`')->fetchAll();
 
foreach ($numb as $all) {
   $vsego = round($all['SUM(sum)'],2); 
}

    ?>
 <?=$vsego;?>

7) Уникальных- это как?  бонусы удаляются каждые 24 часа.
Можно по ай пи наверное определять, но ай пи бывает меняется.
Короче 7-й пункт не имеет смысла .




Подвергнуть критике, может любой.
Создать то,что будет подвергнуто критике,дано не каждому.
 
Пользователи, которые поблагодарили этот пост: MexaN1K

shans5

  • *
  • *
  • Оффлайн
  • Награды Более 8 лет на форуме За 1500 созданных тем Репутация более 75 более 4000 сообщений Топ 10 по сообщениям Топ 10 по созданным темам Бывает груб к участникам форума. За время в онлайне на форуме
  • Дата регистрации: Сен. 2015
  • Расположение: Регион 58
  • Возраст: 44
  • Сообщений: 4868
  • Страна: ru
  • Поблагодарили: 1338 раз(а)
  • Репутация +92/-10
  • Пол: Мужской
  • Всё только начинается !!!
  • Дата рождения:
    1979-06-30
[Нужна помощь] Статистика полученных бонусов
« Ответ #2 : 14 Декабря 2023, 23:20:04 »
Хотя... 7-й пункт:
а)Делаем запрос в базу
ALTER TABLE db_users ADD column `unik` int(1) NOT NULL DEFAULT '0'

б)  В файле pages/user/bonus.php

После: # Зачисляем бонус   
Добавляем:

   
$db->Query("UPDATE db_users SET unik = 1  WHERE id = '$uid'");

в) вывод инфы

<?PHP
 $uniks = $db->query('SELECT SUM(unik) FROM `db_users`')->fetchAll();
 
foreach ($uniks as $all) {
   $vsex = $all['SUM(unik)'] ; 
}

    ?>
 <?=$vsex;?>
 

MexaN1KАвтор темы

  • *
  • Оффлайн
  • Награды Более 8 лет на форуме Более 100 сообщений Благодарность от форума Более 10 созданных тем
  • Дата регистрации: Янв. 2016
  • Возраст: 32
  • Сообщений: 106
  • Страна: by
  • Поблагодарили: 88 раз(а)
  • Репутация +2/-0
  • Пол: Мужской
  • Дата рождения:
    1991-12-17
[Нужна помощь] Статистика полученных бонусов
« Ответ #3 : 15 Декабря 2023, 11:57:43 »
Очень благодарен.   :clap:
Надеюсь эта тема многим понадобиться.
 

pront

  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! Более 10 сообщений
  • Дата регистрации: Сен. 2017
  • Сообщений: 35
  • Страна: ru
  • Репутация +0/-0
  • Пол: Мужской
Что то голову уже сломал...а если бонус раз в три часа-как вывести инфу полученных бонусов за сутки
 

shans5

  • *
  • *
  • Оффлайн
  • Награды Более 8 лет на форуме За 1500 созданных тем Репутация более 75 более 4000 сообщений Топ 10 по сообщениям Топ 10 по созданным темам Бывает груб к участникам форума. За время в онлайне на форуме
  • Дата регистрации: Сен. 2015
  • Расположение: Регион 58
  • Возраст: 44
  • Сообщений: 4868
  • Страна: ru
  • Поблагодарили: 1338 раз(а)
  • Репутация +92/-10
  • Пол: Мужской
  • Всё только начинается !!!
  • Дата рождения:
    1979-06-30
Из этой же базы никак, если данные удаляются  за три часа, то за 24 часа там не будет данных, что логично...

Если нужно, то делаем следующее:

1) Делаем запрос в базу:
CREATE TABLE IF NOT EXISTS `db_bonstat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `add`int(11) NOT NULL DEFAULT 0,
  `del`int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

2) В верху в файле бонуса ищем примерно это:
$ddel = time() + 60*60*3;
$dadd = time();

Ниже добавляем:

$s = time() + 60*60*24;

3) Там же добавляем:

$st = $db->query('SELECT * FROM `db_bonstat`')->numRows();

4) Ищем строку:

   # Вносим запись в список бонусов
   $db->query('INSERT INTO db_bonus (`login`, `uid`, `sum`, `add`, `del`) VALUES (?,?,?,?,?)', array($login, $uid, $sum, $dadd, $ddel));

Ниже добавляем:

   #Запись в стату за 24 часа
   $db->query('INSERT INTO db_bonstat (`add`, `del`) VALUES (?,?)', array($dadd, $s));

5) Ищем строку:

# Случайная очистка устаревших записей
   $db->query("DELETE FROM db_bonus WHERE `del` < '$dadd'");

Ниже добавляем:

#Удаляем лишнее из статы
   $db->query("DELETE FROM db_bonstat WHERE `del` < '$dadd'");

6)Выводим данные в нужном месте: ( должно быть ниже чем строка из пункта 3  )


За 24 часа получено <?=$st;?> бонусов

P.S.   не проверял, но по теории должно работать.






 
Теги: