Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Моды/Плагины | Моды/Mods
# 1 Тема: Панель "Топ пользователей"
KiRiLl
Пользователь

Avatar пользователя

Улучшаю знания PHP

Любитель Fusion

Сообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз
Статус: offline
ICQ статус 414857009
Опубликовано 17 Августа 2008, 19:48:29
Кто-нить может переделать эту панель, что показывало не всех зарегистрированных на сайте пользователей, а только 10 самых активных?
Прикрепленные файлы
Для просмотра вложения зарегистрируйтесь
 
^ наверх ^ 414857009
# 2  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 24 Августа 2008, 13:49:27
Работает, но хз правильно ли? Проверяем (красным выделил то что добавил - лимит в 10 строк)

<?php
@openside("Наша команда");
echo"<style>
.lvl_1{ background-color: #8D1B1B; border: 2px ridge #B22222; }
.lvl_2{ background-color: #6740E1; border: 2px ridge #4169E1; }
.lvl_3{ background-color: #8D8D8D; border: 2px ridge #D2D2D2; }
.lvl_4{ background-color: #CC8500; border: 2px ridge #FFA500; }
.lvl_5{ background-color: #5B781E; border: 2px ridge #6B8E23; }
.lvl_6{ background-color: #DE4900; border: 2px ridge #DE4D00; }
.lvl_7{ background-color: #5AC718; border: 2px ridge #5ACB00; }
.lvl_8{ background-color: #5B781E; border: 2px ridge #6B8E23; }
.lvl_9{ background-color: #C6C3C6; border: 2px ridge #BDBABD; }
.lvl_10{ background-color: #FFFF00; border: 2px ridge #FFFF7B; }
.pollstableborder {border: 1px solid;padding: 2px;}
</style>";
echo "<table width='96%' cellpadding='0' cellspacing='0'>";
$sql = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_level>='102' ORDER BY user_level DESC, user_posts LIMIT 10");
while ($data = dbarray($sql)) {
$name = $data['user_name'];
$id = $data['user_id'];
$icq = $data['user_icq'];
$result = dbquery("SELECT user_posts FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'");
$data2 = dbarray($result);
$num_posts = $data2['user_posts'];
$num_shout = dbcount("(shout_id)", "shoutbox", "shout_name='".$data['user_id']."'");
$num_comment = dbcount("(comment_id)", "comments", "comment_name='".$data['user_id']."'");
$rating = dbcount("(rating_id)", "ratings", "rating_user='".$data['user_id']."'");
$num_rang = ($num_shout+$num_comment+$rating+$num_posts);
if ($num_rang >= "1") {$rang = "5";$level = "1";}
if ($num_rang >= "5") {$rang = "25";$level = "2";}
if ($num_rang >= "25") {$rang = "50";$level = "3";}
if ($num_rang >= "50") {$rang = "100";$level = "4";}
if ($num_rang >= "100") {$rang = "250";$level = "5";}
if ($num_rang >= "250") {$rang = "500";$level = "6";}
if ($num_rang >= "500") {$rang = "1000";$level = "7";}
if ($num_rang >= "1000") {$rang = "2000";$level = "8";}
if ($num_rang >= "2000") {$rang = "4000";$level = "9";}
if ($num_rang >= "4000") {$rang = "10000";$level = "10";}
$poll_posts = $rang;
$opt_posts = ($poll_posts ? number_format(100 / $poll_posts * $num_rang) : 0);
echo"<tr><td>| <b><a href='profile.php?lookup=$id' class='side'>$name</a></td>
<td width='75'><img src='".INFUSIONS."d_team_panel/images/blank.png' title='Уровень:".$level."\nExp:$num_rang ($opt_posts%)\nUps:$rang' height='1' width='$opt_posts%' class='lvl_$level'></td><td align='right'>
<a href='http://www.icq.com/whitepages/cmd.php?uin=$icq&action=add'><img height='16' width='16' alt='Добавить $icq в список ICQ' align=texttop src='http://web.icq.com/whitepages/online?icq=$icq&img=22' border='0'></a></td></tr>";
}
echo"</tr></table>";
@closeside();
?>



Offtopic: PS Откуда стоко админов у вас много? :D


[Изменил(а) Psc, 24 Августа 2008, 13:49:42]

--------------------
Retired
^ наверх ^
1 пользователь сказал спасибо Вам: KiRiLl
# 3  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 24 Августа 2008, 14:39:45
Гык....а причем тут админы?)) Нужны самые активные=)


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 4  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 24 Августа 2008, 16:45:09
Да? У меня просто валяась с таким же названием панелька, думал она и есть smileysmileysmiley

Но смысл то тот же, добавить эту же строку кода в выборку с БД, или с этим есть сложности? У меня нету, хотя SQL знаю исключительно с книгой да и то пара функций (ну нубист я smiley )


--------------------
Retired
^ наверх ^
# 5  
KiRiLl
Пользователь

Avatar пользователя

Улучшаю знания PHP

Любитель Fusion

Сообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз
Статус: offline
ICQ статус 414857009
Опубликовано 24 Августа 2008, 17:27:34
Ага оно работает. Огромное спасибо!!!
а можна еще как нить сделать чтобы оно их сортировало автоматически по набранным очкам?
 
^ наверх ^ 414857009
# 6  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 24 Августа 2008, 19:31:15
ORDER BY user_level

меняем на

ORDER BY user_posts

в коде выше (почти рядом с красным текстом в той же строчке). Не тестировал но должно помочь.


--------------------
Retired
^ наверх ^
1 пользователь сказал спасибо Вам: KiRiLl
# 7  
KiRiLl
Пользователь

Avatar пользователя

Улучшаю знания PHP

Любитель Fusion

Сообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз
Статус: offline
ICQ статус 414857009
Опубликовано 24 Августа 2008, 20:22:38
Psc, огромное спасибо! Оч помог!
 
^ наверх ^ 414857009
# 8  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 25 Августа 2008, 23:36:11
<?php
@openside("TOP пользователей");
echo"<style>
.lvl_1{ background-color: #8D1B1B; border: 5px ridge #B22222; }
.lvl_2{ background-color: #6740E1; border: 5px ridge #4169E1; }
.lvl_3{ background-color: #8D8D8D; border: 5px ridge #D2D2D2; }
.lvl_4{ background-color: #CC8500; border: 5px ridge #FFA500; }
.lvl_5{ background-color: #5B781E; border: 5px ridge #6B8E23; }
.lvl_6{ background-color: #DE4900; border: 5px ridge #DE4D00; }
.lvl_7{ background-color: #5AC718; border: 5px ridge #5ACB00; }
.lvl_8{ background-color: #5B781E; border: 5px ridge #6B8E23; }
.lvl_9{ background-color: #C6C3C6; border: 5px ridge #BDBABD; }
.lvl_10{ background-color: #FFFF00; border: 5px ridge #FFFF7B; }
.pollstableborder {border: 1px solid;padding: 5px;}
</style>";
echo "<table width='96%' cellpadding='0' cellspacing='0'>";
$sql = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_level>='101' ORDER BY user_posts DESC,user_level DESC LIMIT 10");
while ($data = dbarray($sql)) {
$name = $data['user_name'];
$id = $data['user_id'];
//число новостей и статей
$news_ofuser = dbcount('(news_id)','news','news_name='.$id) ;
$articl_ofuser = dbcount('(article_id)','articles','article_name='.$id) ;

$icq = $data['user_icq'];
$result = dbquery("SELECT user_posts FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'");
$data2 = dbarray($result);
$num_posts = $data2['user_posts'];
$num_shout = dbcount("(shout_id)", "shoutbox", "shout_name='".$data['user_id']."'");
$num_comment = dbcount("(comment_id)", "comments", "comment_name='".$data['user_id']."'");
$rating = dbcount("(rating_id)", "ratings", "rating_user='".$data['user_id']."'");
$num_rang = ($num_shout+$num_comment+$rating+$num_posts);
if ($num_rang >= "0") {$rang = "10";$level = "1";}
if ($num_rang >= "10") {$rang = "25";$level = "2";}
if ($num_rang >= "25") {$rang = "50";$level = "3";}
if ($num_rang >= "50") {$rang = "100";$level = "4";}
if ($num_rang >= "100") {$rang = "250";$level = "5";}
if ($num_rang >= "250") {$rang = "500";$level = "6";}
if ($num_rang >= "500") {$rang = "1000";$level = "7";}
if ($num_rang >= "1000") {$rang = "2500";$level = "8";}
if ($num_rang >= "2500") {$rang = "5000";$level = "9";}
if ($num_rang >= "5000") {$rang = "10000";$level = "10";}
$poll_posts = $rang;
$opt_posts = ($poll_posts ? number_format(100 / $poll_posts * $num_rang) : 0);
$norang = ($rang - $num_rang);
echo"<tr><td><b><a href='profile.php?lookup=$id' class='side'>$name</a></td>
<td width='40%'>
(N:$news_ofuser/A:$articl_ofuser)<img src='".INFUSIONS."d_team_panel/images/blank.png' title='Уровень: ".$level."\n Очки: $num_rang ($opt_posts%)\n До след. уровня: $norang' height='1' width='$opt_posts%' class='lvl_$level'></td></tr>";
}

echo"</tr></table>";
@closeside();
?>



Полный код, пофиксено -

10 чел, выборка по постам,
добавлено - счетчик новостей и статей.

Offtopic: Интересно кто еще пишет панели нахаляву под заказ? :)


--------------------
Retired
^ наверх ^
# 9  
sunsir
Пользователь

Avatar пользователя




Местный

Сообщений: 45
Зарегистрирован: 21 Августа 2008, 21:30:03
Сказали спасибо 0 раз
Статус: offline
Опубликовано 27 Августа 2008, 15:10:46
(N:3/A:0) убрать бы нафиг оно нужно
 
^ наверх ^
# 10  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 27 Августа 2008, 15:31:19
Вывод новостей и статей, если не нужно, удали строки и всего делоф.


--------------------
Retired
^ наверх ^
# 11  
sunsir
Пользователь

Avatar пользователя




Местный

Сообщений: 45
Зарегистрирован: 21 Августа 2008, 21:30:03
Сказали спасибо 0 раз
Статус: offline
Опубликовано 27 Августа 2008, 16:19:59
ну я конечно с радость бы!))))) только смотрю в код и вижу фигу!
 
^ наверх ^
# 12  
KiRiLl
Пользователь

Avatar пользователя

Улучшаю знания PHP

Любитель Fusion

Сообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз
Статус: offline
ICQ статус 414857009
Опубликовано 27 Августа 2008, 19:18:32
там строчек то штук 30... поиском найди если не видешь
 
^ наверх ^ 414857009
# 13  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 27 Августа 2008, 19:37:49
Аккуратно удаляем

//число новостей и статей
$news_ofuser = dbcount('(news_id)','news','news_name='.$id) ;
$articl_ofuser = dbcount('(article_id)','articles','article_name='.$id) ;



и чуть ниже

(N:$news_ofuser/A:$articl_ofuser)



--------------------
Retired
^ наверх ^
# 14  
sunsir
Пользователь

Avatar пользователя




Местный

Сообщений: 45
Зарегистрирован: 21 Августа 2008, 21:30:03
Сказали спасибо 0 раз
Статус: offline
Опубликовано 27 Августа 2008, 21:28:12
вот до первой я додумался удалить)))

а вот до второй бы никогда не додумался)))))

Спасибо!
 
^ наверх ^
# 15  
diamont
Пользователь

Avatar пользователя




новичек

Сообщений: 2
Зарегистрирован: 26 Августа 2008, 18:59:34
Сказали спасибо 0 раз
Статус: offline
Опубликовано 28 Августа 2008, 02:07:18
спасибо!smiley


[Изменил(а) diamont, 28 Августа 2008, 02:17:11]  
^ наверх ^
# 16  
dr56
SF Team

Avatar пользователя



SF Support Team

Любитель Fusion

Сообщений: 374
Зарегистрирован: 29 Августа 2008, 15:35:03
Сказали спасибо 25 раз
Статус: offline
Опубликовано 06 Ноября 2008, 09:19:14
а как убрать полоску рядом с ником?

$articl_ofuser = dbcount('(article_id)','articles','article_name='.$id) ; эта функция считает количество статей?

и можно сделать, что бы сортировка была по количеству добавленных новостей и статей в сумме?


[Изменил(а) dr56, 06 Ноября 2008, 09:25:19]  
^ наверх ^
# 17  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 06 Ноября 2008, 16:10:21
1) закомментировав/удалив ее
2) Да (гениальная прозорливость)
3) Можно. PS Возрастет загрузка на бд.


--------------------
Retired
^ наверх ^
# 18  
dr56
SF Team

Avatar пользователя



SF Support Team

Любитель Fusion

Сообщений: 374
Зарегистрирован: 29 Августа 2008, 15:35:03
Сказали спасибо 25 раз
Статус: offline
Опубликовано 06 Ноября 2008, 17:38:01
Psc написал:
3) Можно. PS Возрастет загрузка на бд.

Сильно возрастет?
 
^ наверх ^
# 19  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 06 Ноября 2008, 19:32:42
хз кванты времени не считаю, но абстрактно, 2 подзапроса на каждого из 10 юзеров, то есть 300% получается smiley


--------------------
Retired
^ наверх ^
# 20  
KiRiLl
Пользователь

Avatar пользователя

Улучшаю знания PHP

Любитель Fusion

Сообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз
Статус: offline
ICQ статус 414857009
Опубликовано 06 Ноября 2008, 19:40:54
Сделайте чтобы эта статистика не по количеству постов сортировала, а по количеству баллов в целом
 
^ наверх ^ 414857009
Перейти на форум:


106,508,796 уникальных посетителей
сейчас: 18 Декабря 2024, 04:57:28
Генерация страницы: 0.48 сек.

Original size:55 кб.
GZipped size: 10 кб.
Compression:83%