# 1
Тема: Панель "Топ пользователей"
KiRiLl
Пользователь
Улучшаю знания PHP
Любитель FusionСообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз Статус: offline
ICQ статус
Опубликовано 17 Августа 2008, 19:48:29
Кто-нить может переделать эту панель, что показывало не всех зарегистрированных на сайте пользователей, а только 10 самых активных?
Прикрепленные файлы
^ наверх ^
# 2
Psc
SF Team
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
паZитифф
SF Support Team
Почетный SFСообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз Статус: offline
ICQ статус
Опубликовано 24 Августа 2008, 14:39:45
Гык....а причем тут админы?)) Нужны самые активные=)
--------------------wmz - Z226856101527
wmr - R513979829437
Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^
# 4
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 24 Августа 2008, 16:45:09
Да? У меня просто валяась с таким же названием панелька, думал она и есть
Но смысл то тот же, добавить эту же строку кода в выборку с БД, или с этим есть сложности? У меня нету, хотя SQL знаю исключительно с книгой да и то пара функций (ну нубист я )
-------------------- Retired
^ наверх ^
# 5
KiRiLl
Пользователь
Улучшаю знания PHP
Любитель FusionСообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз Статус: offline
ICQ статус
Опубликовано 24 Августа 2008, 17:27:34
Ага оно работает. Огромное спасибо!!!
а можна еще как нить сделать чтобы оно их сортировало автоматически по набранным очкам?
^ наверх ^
# 6
Psc
SF Team
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
Пользователь
Улучшаю знания PHP
Любитель FusionСообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз Статус: offline
ICQ статус
Опубликовано 24 Августа 2008, 20:22:38
Psc , огромное спасибо! Оч помог!
^ наверх ^
# 8
Psc
SF Team
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
Пользователь
МестныйСообщений: 45
Зарегистрирован: 21 Августа 2008, 21:30:03
Сказали спасибо 0 раз Статус: offline
Опубликовано 27 Августа 2008, 15:10:46
(N:3/A:0) убрать бы нафиг оно нужно
^ наверх ^
# 10
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 27 Августа 2008, 15:31:19
Вывод новостей и статей, если не нужно, удали строки и всего делоф.
-------------------- Retired
^ наверх ^
# 11
sunsir
Пользователь
МестныйСообщений: 45
Зарегистрирован: 21 Августа 2008, 21:30:03
Сказали спасибо 0 раз Статус: offline
Опубликовано 27 Августа 2008, 16:19:59
ну я конечно с радость бы!))))) только смотрю в код и вижу фигу!
^ наверх ^
# 12
KiRiLl
Пользователь
Улучшаю знания PHP
Любитель FusionСообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз Статус: offline
ICQ статус
Опубликовано 27 Августа 2008, 19:18:32
там строчек то штук 30... поиском найди если не видешь
^ наверх ^
# 13
Psc
SF Team
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
Пользователь
МестныйСообщений: 45
Зарегистрирован: 21 Августа 2008, 21:30:03
Сказали спасибо 0 раз Статус: offline
Опубликовано 27 Августа 2008, 21:28:12
вот до первой я додумался удалить)))
а вот до второй бы никогда не додумался)))))
Спасибо!
^ наверх ^
# 15
diamont
Пользователь
новичекСообщений: 2
Зарегистрирован: 26 Августа 2008, 18:59:34
Сказали спасибо 0 раз Статус: offline
Опубликовано 28 Августа 2008, 02:07:18
спасибо!
[Изменил(а) diamont , 28 Августа 2008, 02:17:11]
^ наверх ^
# 16
dr56
SF Team
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
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
SF Support Team
Любитель FusionСообщений: 374
Зарегистрирован: 29 Августа 2008, 15:35:03
Сказали спасибо 25 раз Статус: offline
Опубликовано 06 Ноября 2008, 17:38:01
Psc написал:
3) Можно. PS Возрастет загрузка на бд.
Сильно возрастет?
^ наверх ^
# 19
Psc
SF Team
Psc
SF Support Team
Почетный SFСообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз Статус: offline
Опубликовано 06 Ноября 2008, 19:32:42
хз кванты времени не считаю, но абстрактно, 2 подзапроса на каждого из 10 юзеров, то есть 300% получается
-------------------- Retired
^ наверх ^
# 20
KiRiLl
Пользователь
Улучшаю знания PHP
Любитель FusionСообщений: 151
Откуда: Красноярск
Зарегистрирован: 25 Января 2008, 20:08:38
Сказали спасибо 6 раз Статус: offline
ICQ статус
Опубликовано 06 Ноября 2008, 19:40:54
Сделайте чтобы эта статистика не по количеству постов сортировала, а по количеству баллов в целом
^ наверх ^