使用复选框的发票生成器-未定义的偏移量[2] PHP Codeigniter

时间:2018-09-05 06:59:47

标签: php codeigniter

我正在尝试在学校管理系统中生成多张发票。 这是问题所在:

例如,我在数据库中有10个学生

如果按连续顺序选择学生,我可以生成发票。 学生1,学生2,学生3,学生4

但是一旦我错过了一个连续顺序的学生,并尝试以随机顺序生成,就会给我一个不确定的偏移量错误: 学生1,学生4,学生5,学生7

代码如下:

    for($x = 1; $x <= count($this->input->post('studentId')); $x++) {                               
        $insert_data = array(                                   
            'class_id'      => $this->input->post('className'),
            'section_id'    => $this->input->post('sectionName'),
            'student_id'    => $this->input->post('studentId')[$x],         
            'payment_name_id' => $payment_name_id
        );

        $status = $this->db->insert('payment', $insert_data);
    }

    return ($status === true ? true : false);

一旦生成发票,编辑发票同样适用。 我什至尝试将for循环更改为while循环,这不会给我任何错误,但是如果选择的学生是随机顺序的话,这只是不保存:

            $x = 1;
            $form_fields = count($this->input->post('editStudentId')); 

            while($x <= $form_fields) { 

                    if(!empty($this->input->post('editStudentId')[$x])) {
                        $update_payment_data = array(                                   
                            'class_id'      => $this->input->post('editClassName'),
                            'section_id'    => $this->input->post('editSectionName'),
                            'student_id'    => $this->input->post('editStudentId')[$x],         
                            'payment_name_id' => $id
                        );

                        $status = $this->db->insert('payment', $update_payment_data);
                    }

                $x++;
            }

            return ($status === true ? true : false);

图像-选择学生: Selecting Students

图像-从我选择的4个图像中仅保存2个: Post Save

1 个答案:

答案 0 :(得分:2)

for替换为foreach

foreach ($this->input->post('studentId') as $studentId) {
    $insert_data = array(                                   
        'class_id'      => $this->input->post('className'),
        'section_id'    => $this->input->post('sectionName'),
        'student_id'    => $studentId,         
        'payment_name_id' => $payment_name_id
    );

    $status = $this->db->insert('payment', $insert_data);
}