# 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 
		
 
 
		Сделайте чтобы эта статистика не по количеству постов сортировала, а по количеству баллов в целом 
		
 
 
		 
		
^ наверх ^