Звания в зависимости от аплоада

  • Автор темы ИгорьСытник
  • Дата начала
И

ИгорьСытник

Гость
ИМХО.Вместо надписей, лучше использовать картинки. Соответственно прописав путь.
модификация лишь наталкивает на возможности , остальное на своё усмотрение так сказать

у вас viewtopic.php не умерт от такого кол-ва запросов? для начала: нередко в темах отвечают одни и те же люди, логично кешировать их звания и выводить при повторе автора уже звание из кеша, а не делать ещё один запрос, а правильнее - добавить ещё одно поле в bb_users и звания прописывать в это поле по крону соотв. запросом. В-общем, моду есть ещё куда расти и развиваться, так что автор тебе на заметку! ;-)
тогда как поместить в кеш определённый запрос?
 

dimka3210

Легенда
модификация лишь наталкивает на возможности , остальное на своё усмотрение так сказать

тогда как поместить в кеш определённый запрос?

в кеш запрос не положишь. Можно положить результат запроса.
 

druid

Пользователь
Самое простое - использовать ассоциативный массив. Перед запросом проверять, нет ли в массиве нужного юзера. Если нет - делать запрос и помещать его результат в массив.

Чуть сложнее - сделать сложный запрос, объединив запрос получения ответов в теме с получением статистики из BT_USERS_TABLE

Самое сложное - добавить поле в BB_USERS и по крону пересчитывать звания запросом
 
И

ИгорьСытник

Гость
Самое простое - использовать ассоциативный массив. Перед запросом проверять, нет ли в массиве нужного юзера. Если нет - делать запрос и помещать его результат в массив.

Чуть сложнее - сделать сложный запрос, объединив запрос получения ответов в теме с получением статистики из BT_USERS_TABLE

Самое сложное - добавить поле в BB_USERS и по крону пересчитывать звания запросом

к сожалению такое реализовать для меня всё сложно
 
И

ИгорьСытник

Гость
ребята, нужен ваш совет, как сделать разные звания для разного пола м/ж
У меня на форуме значительный женский контенгент, хотелось бы к примеру такие звания:
для жен. : $lang['poster_ur1_rank_50']= 'Бестия';
для муж. : $lang['poster_ur1_rank_50']= 'Мачо';
как такое реализовать , прошу подскажите пожалуйста, очень нужно
 

Kex

Пользователь
Помогите сделать крон задачу, добавил поле в BB_USERS, назвал user_rank_seeder. Пытаюсь переписать код, но чет не клеится, вот кусок, что не верно?
PHP:
$row = DB()->fetch_row("SELECT COUNT(*) AS usercount FROM ". BB_USERS ." WHERE user_id NOT IN(". EXCLUDED_USERS_CSV .")");
$total_users = $row['usercount'];

for($i = 0; $i < $total_users; $i++)
$sql = "select u_up_total FROM " . BB_BT_USERS . " WHERE user_id = " . $postrow[$i]['user_id'] ;
DB()->query($sql);
if ($row = DB()->fetch_row($sql))
{
$u_up_total = $row['u_up_total'];
}

@$u_rate = round(($u_up_total)/1024/1024/1024, 2) ;
if($u_rate < 5) //0GB+
{
DB()->query = "UPDATE " . BB_USERS . " SET user_rank_seeder = 1");
}
if(($u_rate >= 5)&&($u_rate < 10)) //5GB+
{
DB()->query = "UPDATE " . BB_USERS . " SET user_rank_seeder = 2");
}

Ругается на неопределенность переменной $postrow, но я не догоняю, как ее описать. Подскажите, кто может.
 

Kex

Пользователь
Ок, сделал по другому примеру, без всяких $postrow, вот кусочек:

PHP:
define('TOPSEEDER_BRONZ_1', 1);
define('TOPSEEDER_BRONZ_2', 2);
define('TOPSEEDER_BRONZ_3', 3);
define('TOPSEEDER_BRONZ_4', 4);
define('TOPSEEDER_BRONZ_5', 5);
 
$sql = DB()->fetch_rowset("
SELECT u.*, bt.*,
COUNT(tor.topic_id) as releases
FROM bb_users u
LEFT JOIN bb_bt_torrents tor ON ( tor.poster_id = u.user_id )
LEFT JOIN bb_bt_users bt ON ( bt.user_id = u.user_id )
WHERE u.user_active = 1
GROUP BY u.user_id
");
 
foreach ($sql as $key => $row)
{
$ratio = ($row['u_down_total']) ? ($row['u_up_total'] + $row['u_up_release'] + $row['u_up_bonus']) / $row['u_down_total'] : '0';
$u_rate = round(($row['u_up_total'])/1024/1024/1024, 2) ;
 
if(($ratio >= 1) && ($row['releases'] >= 20))
{
if(($u_rate >= 150)&&($u_rate < 299))
{
$Topseeder_Bronz_1[] = $row['user_id'];
}
if (($u_rate >= 300)&&($u_rate < 499))
{
$Topseeder_Bronz_2[] = $row['user_id'];
}
if (($u_rate >= 500)&&($u_rate < 749))
{
$Topseeder_Bronz_3[] = $row['user_id'];
}
if (($u_rate >= 750)&&($u_rate < 999))
{
$Topseeder_Bronz_4[] = $row['user_id'];
}
if (($u_rate >= 1000)&&($u_rate < 1299))
{
$Topseeder_Bronz_5[] = $row['user_id'];
}
else
{
$User[] = $row['user_id'];
}
}
DB()->query("UPDATE bb_users SET user_rank_seeder = ". USER ." WHERE user_id IN(". implode(', ', array_diff($User, array(''))) .")");
DB()->query("UPDATE bb_users SET user_rank_seeder = ". TOPSEEDER_BRONZ_1 ." WHERE user_id IN(". implode(', ', array_diff($Topseeder_Bronz_1, array(''))) .")");
DB()->query("UPDATE bb_users SET user_rank_seeder = ". TOPSEEDER_BRONZ_2 ." WHERE user_id IN(". implode(', ', array_diff($Topseeder_Bronz_2, array(''))) .")");
DB()->query("UPDATE bb_users SET user_rank_seeder = ". TOPSEEDER_BRONZ_3 ." WHERE user_id IN(". implode(', ', array_diff($Topseeder_Bronz_3, array(''))) .")");
DB()->query("UPDATE bb_users SET user_rank_seeder = ". TOPSEEDER_BRONZ_4 ." WHERE user_id IN(". implode(', ', array_diff($Topseeder_Bronz_4, array(''))) .")");
DB()->query("UPDATE bb_users SET user_rank_seeder = ". TOPSEEDER_BRONZ_5 ." WHERE user_id IN(". implode(', ', array_diff($Topseeder_Bronz_5, array(''))) .")");

Выдает ошибку: Notice: Undefined variable: Topseeder_Bronz_3 in C:\nimpix\htdocs\includes\cron\jobs\user_rank_seeder.php on line 140 Warning: array_diff(): Argument #1 is not an array in C:\nimpix\htdocs\includes\cron\jobs\user_rank_seeder.php on line 140 Warning: implode(): Invalid arguments passed in C:\nimpix\htdocs\includes\cron\jobs\user_rank_seeder.php on line 140 Fatal error: DB Error [includes\cron\jobs\user_rank_seeder.php(140)] in C:\nimpix\htdocs\includes\db\mysql.php on line 803
От массивов у меня уже голова пухнет, че ему надо то? Если я здесь что-то мутное сочинил, вы уж поскажите как, если знаете. ;)
 
Сверху