2014-12-27 3 views
0

Я пытаюсь показать топ-пользователей по точкам деятельности, я могу получить только верхний пользователь, используя этот кодкак показать ТОП 5 пользователей в phpfox

<?php 
$dbase = Phpfox::getLib('database'); 
      $aRow = $dbase->select(Phpfox::getUserField() . ', ur.activity_points AS score') 
        ->from(Phpfox::getT('user'), 'u') 
        ->join(Phpfox::getT('user_activity'),'ur','ur.user_id = u.user_id') 
        ->where('ur.activity_points > 0') 
        ->limit(10)   
        ->order('ur.activity_points DESC') 
        ->execute('getRow'); 
?> 
<?php if (count ($aRow)){ ?> 
<div class="block" id="js_sortable_friend_mini"><div class="title ">Top Active Users</div> 
<div class="clear" style="height: 5px;"></div> 
<ul id="topuserpoints"> 
<div class="name_userpoints"> 
<?php echo '<a href="' . Phpfox::getLib('phpfox.url')->makeUrl('profile', $aRow['user_name']) . '">' . $aRow['full_name'] . '</a>'; ?> 
</div> 
<div class="score_userpoints"> 
<?php echo $aRow['score']; ?> 
</div></ul> 
</div> 
<div class="clear"></div> 
<?php } unset($aRow); ?> 

Этот код даст только верхний пользователь. но я хочу наверх 5. Пожалуйста, помогите

ответ

0

Попробуйте выполнить с «GetRows» и установить предел до 5, если вы хотите, 5 из лучших:

   ...... 
       ->limit(5)   
       ->order('ur.activity_points DESC') 
       ->execute('getRows'); 
       ..... 
+0

Уважаемый сэр, благодарю вас за ответ, но 5 не дает мне требуемого результата. этот код показывает только самый верхний пользователь, я хочу показать топ-5 пользователей. Есть идеи? пожалуйста, помогите – temmy

+0

Уверены ли вы, что у вас есть как минимум 5 пользователей в вашей базе данных, а их точки отличаются от 0? –

+0

да, сэр много пользователей. Более того, я хочу показать текущую позицию пользователей этого списка – temmy

0

Вы можете попробовать с GetRows или getSlaveRows вместо GetRow в Ваш запрос.

->execute('getRow'); 

getRow вернет только одну запись, getRows вернет более одного.

Ниже приведен код для отображения параметра «Место», основанного на точках активности.

$dbase = Phpfox::getLib('database'); 
$aRow = $dbase->select(Phpfox::getUserField() . ', ur.activity_points , FIND_IN_SET(activity_points, (SELECT GROUP_CONCAT(DISTINCT activity_points ORDER BY activity_points DESC) FROM '.Phpfox::getT('user_activity').')) AS rank ') 
       ->from(Phpfox::getT('user'), 'u') 
       ->join(Phpfox::getT('user_activity'),'ur','ur.user_id = u.user_id') 
       ->where('ur.activity_points > 0') 
       ->limit(10)   
       ->order('rank') 
       ->execute('getRows');