Значения переключателей в цикле foreach в PHP Codeigniter - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь создать элемент ввода типа radio в цикле foreach и сохранить значения в базе данных при нажатии кнопки отправки. Я использую Codeigniter Framework.

Мои просмотры:

<?php echo form_open('students_report/produce_aptitude_score/'.$y->id); ?>

    <table>
        <tbody>
            <?php
            $i = 1;
            foreach ($aptitudes as $p) { ?>

                <input type="hidden" name="aptitude[]" value="<?php echo $p->aptitude; ?>" />
                <tr>
                    <td><?php echo $i; ?></td>
                    <td><?php echo $p->aptitude; ?></td>

                    <td>
                        <div class="form-group">
                            <input class="form-control" type="radio" name="score[<?php echo $i; ?>]" value="1" />
                        </div>
                    </td>
                    <td>
                        <div class="form-group">
                            <input class="form-control" type="radio" name="score[<?php echo $i; ?>]" value="2" />
                        </div>
                    </td>
                </tr>
                <?php $i++; //increment index
             } //endforeach ?>
        </tbody>
    </table>

    <button class="btn btn-success btn-lg">Submit</button>

<?php echo form_close(); ?> 

Мой контроллер

public function produce_aptitude_score($id) { 
        $y = $this->common_model->get_student_details_by_id($id);
        $this->form_validation->set_rules('aptitude[]', 'Aptitude', 'trim');

        $aptitude = $this->input->post('aptitude', TRUE);
        $score = $this->input->post('score', TRUE);

        if ($this->form_validation->run()) {
            for ($i = 0; $i < count($aptitude); $i++) {
                $d_aptitude = $aptitude[$i];
                $d_score = $score[$i];
                $query = $this->students_report_model->check_aptitude_score_exists($id, $d_aptitude);
                if ($query->num_rows() == 0) { //data does not exists, do insert
                    $this->students_report_model->insert_aptitude_score($id, $d_aptitude, $d_score);
                } else { //data already exists, do update
                    $this->students_report_model->update_aptitude_score($id, $d_aptitude, $d_score); 
                } 
            }
            $this->session->set_flashdata('status_msg', "Aptitude score submitted successfully for {$y->first_name}");  
            redirect($this->agent->referrer());
        } else {
            $this->produce_report($id); //form validation fails, reload page with errors
        }
    }

Моя модель

public function insert_aptitude_score($id, $aptitude, $score) {
        $y = $this->common_model->get_student_details_by_id($id);
        $data = array(
            'admission_id' => $y->admission_id, 
            'aptitude' => $aptitude, 
            'score' => $score, 
            'session' => current_session, 
            'term' => current_term, 
        );
        return $this->db->insert('aptitude_scores', $data); 
    } 


    public function update_aptitude_score($id, $aptitude, $score) {
        $y = $this->common_model->get_student_details_by_id($id);
        $query = $this->check_aptitude_score_exists($id, $aptitude);
        $result_id = $query->row()->id;
        $data = array(
            'aptitude' => $aptitude, 
            'score' => $score, 
        );
        $this->db->where('id', $result_id); 
        return $this->db->update('aptitude_scores', $data); 
    } 

Когда я отправляю, почему я получаю следующую ошибку?

PHP: неопределенное смещение: 0

База данных: столбец «оценка» не может быть нулевым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...