使用codeigniter同时更新从foreach输入字段派生其值的多个数据库记录

时间:2017-02-01 10:39:50

标签: php codeigniter

我是一名试图开发学生成绩应用程序的低级代码爱好者。一旦输入所有科目的分数,它将捕获每个科目的个别学生分数并生成综合报告表格。

如果有规定为班级中的所有学生输入学生成绩并一次发布所有学生(更新所有按钮)而不是单独发布每个学生成绩(更新按钮),这将简化教师的工作。这就是我的困境所在。

学生成绩单表格

enter image description here

在我的控制器中,更新代码为:

DBPROP COMMANDTIMEOUT

更新按钮正常工作。我似乎没有概念化如何使'全部更新'工作。请帮忙。

if ($this->input->post('operation') == 'update') {
$data['mark_obtained'] = $this->input->post('mark_obtained');
$data['mark_total'] = $this->input->post('mark_total');

if($data['mark_obtained']<=$data['mark_total'] && $data['mark_obtained']>=0){
$this->db->where('mark_id', $this->input->post('mark_id'));
$this->db->update('mark', $data);
}

1 个答案:

答案 0 :(得分:0)

只是抬头,这是我的第一个回答,所以我提前为格式化/破坏规则道歉。

扩展Hassan ALi的评论。您应该发布一组值而不是单个值。

Codeigniter具有以下功能: “要返回多个POST参数的数组,请将所有必需的键作为数组传递。$ this-&gt; input-&gt; post(array('field1','field2'));” https://www.codeigniter.com/user_guide/libraries/input.html

我会考虑在创建数组时使用mark_id作为键。 例如,如果你有一个名为$ marks_obtained_array的数组,那么你可以插入键值对'id' - &gt; '标记'。

然后,如果你还有一个mark_id的数组,那么你可以在控制器中轻松地遍历它们以进行更新。

if ($this->input->post('operation') == 'update_all') {
     foreach($mark_ids_array as $mark_id){
         $data['mark_obtained'] = $marks_obtained_array[$mark_id];
         $data['mark_total'] = $marks_total_arry[$mark_id];

         if($data['mark_obtained']<=$data['mark_total'] && $data['mark_obtained']>=0){
              $this->db->where('mark_id', $mark_id);
              $this->db->update('mark', $data);
          }
....
}