在codeigniter中显示前10个结果并显示第1,第2和第3个最高值

时间:2015-06-13 08:11:22

标签: php html mysql css codeigniter

我正在获得这样的输出页面(如下面的截图refer below image所示)

我希望金色图像能够显示给最佳射手,银色能够显示给第二个顶级选手并将铜色显示给其他人

我正在使用这样的代码

<div class="row">
<div class="col-lg-12">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title"><i class="fa fa-tasks"></i> ScoreBoard</h3>
        </div>
        <div class="panel-body">
           <div class="col-sm-12">
                <table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered">

                    <tbody>
                        <?php
                            $total_exams1 = $this->db->select('title_id')   
                                    ->from('exam_title')
                                    ->count_all_results();

                                $b1 = $this->db->select('*, (sum(result.result_percent)) / '.$total_exams1.' as percent')   
                                                    ->group_by('users.user_id')                                     
                                                    ->from('result')
                                                    ->order_by("percent", "desc" )
                                                    ->join('users', 'users.user_id = result.user_id', 'left')
                                                    ->join('states', 'users.state = states.state_id', 'left')
                                                    ->join('user_zone', 'users.user_zone = user_zone.user_zone_id', 'left')
                                                    ->limit("10")
                                                    ->get()
                                                ->result(); 
                            $j = 1; 
                            foreach($b1 as $z) {                                            
                        ?>
                            <tr class="<?= ($i & 1) ? 'even' : 'odd'; ?>">                                    
                                <td style="width:5%;"><?php echo $j; ?></td> 
                                    <?php if($z->image == "") { ?>
                                <td class="hidden-x" style="width:35%;">    
                                    <img class="userImgTop10n" src="<?php echo base_url('user-avatar/avatar-placeholder.jpg') ?>" alt="Profile Picture" />
                                    <div class="image_righ">
                                        <b><?php echo $z->user_name; ?></b><br>
                                        <?php echo $z->state_name; ?><br>
                                        <?php echo $z->user_zone_name; ?>
                                    </div>
                                </td>                                   
                                    <?php } else { ?>
                                <td class="hidden-x" >
                                    <img class="userImgTop10n" src="<?php echo base_url("user-avatar/".$z->image); ?>" alt="Profile Picture" />
                                    <div class="image_righ">
                                        <b><?php echo $z->user_name; ?></b><br>
                                        <?php echo $z->state_name; ?><br>
                                        <?php echo $z->user_zone_name; ?>
                                    </div>
                                </td>                                   
                                    <?php } ?>          
                                <?php                   
                                    $exams_attended1 = $this->db->select('title_id')    
                                        ->where('user_id', $z->user_id)
                                        ->from('result')
                                        ->group_by('user_id')
                                        ->count_all_results();
                                ?>
                                <td class="hidden-xxs"><b><?php echo $exams_attended1; ?></b><br>Exams Attended</td>
                                <td class="hidden-xxs"><b><?php echo $total_exams1; ?></b><br>Total Exams</td>
                                <td class="hidden-x">
                                    <b><?php echo round($z->percent, 2); ?> %</b><br>Avg Result 
                                          <div class="badge_righ">
                                          <?php if($j == 1) { ?>                                              
                                          <span><img class="userBadge" src="<?php echo base_url('Badge_Gold.png') ?>" alt="Badge Gold" /></span>                                             
                                          <?php } 
                                          if($j == 2) { ?>                                           
                                          <span><img class="userBadge" src="<?php echo base_url('Badge_Silver.png') ?>" alt="Badge Gold" /></span>                                            
                                          <?php } if($j > 2) { ?>                                              
                                          <span><img class="userBadge" src="<?php echo base_url('Badge_Bronze.png') ?>" alt="Badge Gold" /></span>                                    
                                          <?php } ?>
                                          </div>
                                </td>                                   
                            </tr>
                            <?php 
                            $j++;
                                }
                            ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

在上面的截图中,前3行应该是黄金图像(因为标记相同)。

1 个答案:

答案 0 :(得分:0)

您可以创建包含唯一反向排序平均分数的临时数组。然后,在给予奖牌时,而不是检查位置(第1,第2,第3 ......),检查得分是否与该临时阵列的第1,第2或第3分相匹配。

对于您发布的屏幕截图,数组看起来像:

$scores = [92.5, 90, 87.5];

并且金牌将是得分为$scores[0]的所有得分,银牌为$scores[1],青铜将为$scores[2](除非你想要所有人< / em>否则获得铜牌。