如何计算指定科目下学生总分总和并在视图表格中展示
实现步骤
1. 控制器中调用模型方法获取总分值
你写的GetsumScore方法返回的是查询结果对象,CI框架中select_sum('total')查询返回的对象默认会携带total属性存储求和结果,你需要先在控制器中调用该方法,处理后传递给视图,示例代码:
// 控制器中的业务方法 public function showScoreSum() { // 加载自定义模型,替换为你实际的模型名 $this->load->model('score_model'); // 替换为实际的查询参数值 $subject_id = 7; $session_id = '实际session_id'; $section_id = 1; $class_id =3; // 调用模型方法获取求和结果 $sum_result = $this->score_model->GetsumScore($subject_id, $session_id, $section_id, $class_id); // 提取总和,无匹配数据时默认设为0避免报错 $data['subject_total'] = $sum_result ? $sum_result->total : 0; // 原有学生成绩列表数据也同步传给视图 // $data['score_list'] = 你的学生成绩列表查询结果; // 加载视图并传递所有数据 $this->load->view('score_view', $data); }
2. 视图中渲染总和到表格
你可以在原有学生成绩表格末尾新增汇总行展示总和,示例代码:
<table> <thead> <tr> <th>student_id</th> <th>class_id</th> <th>section_id</th> <th>subject_id</th> <th>test1</th> <th>test2</th> <th>total</th> </tr> </thead> <tbody> <!-- 原有循环渲染学生成绩的逻辑 --> <?php foreach($score_list as $item): ?> <tr> <td><?= $item->student_id ?></td> <td><?= $item->class_id ?></td> <td><?= $item->section_id ?></td> <td><?= $item->subject_id ?></td> <td><?= $item->test1 ?></td> <td><?= $item->test2 ?></td> <td><?= $item->total ?></td> </tr> <?php endforeach; ?> </tbody> <!-- 汇总行展示科目总分 --> <tfoot> <tr style="font-weight:bold"> <td colspan="6" style="text-align:right">当前科目总分总和:</td> <td><?= $subject_total ?></td> </tr> </tfoot> </table>
扩展补充:如果需要同时计算所有科目的总分
可以修改模型方法按科目分组查询即可:
public function getAllSubjectSum($session_id, $section_id, $class_id) { $this->db->select('subject_id'); $this->db->select_sum('total'); $this->db->where('session_id', $session_id); $this->db->where('section_id', $section_id); $this->db->where('class_id', $class_id); $this->db->group_by('subject_id'); return $this->db->get('scores')->result(); }
返回结果是所有科目各自的总分列表,直接循环渲染到汇总表格即可。
内容的提问来源于stack exchange,提问作者MaryPebbles
相关产品推荐
相关产品推荐

