Пакетная вставка из формы в цикл foreach в коде воспламенителя - PullRequest
0 голосов
/ 25 июня 2018

У меня есть представление, которое содержит форму, в которой отображаются все предметы из моей базы данных с полями ввода для ввода баллов по каждому предмету, а затем щелкаю кнопку для отправки данных в базу данных одним махом.

        <?php echo form_open('teacher/submit_ca_score/'.$d->id); ?>

            <table class="table table-bordered cell-text-middle" style="text-align: left">
                <thead>
                    <tr>
                        <th class="w-10">S/N</th>
                        <th class="w-50">Subject</th>
                        <th class="w-15">CA Score</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    $count = 1;
                    foreach ($subjects as $s) { 

                        $query = $this->teacher_model->check_ca_score_exists($d->id, $s->subject); ?>

                        <tr>
                            <td><?php echo $count; ?></td>
                            <td><?php echo $s->subject; ?></td>
                            <td>
                                <div class="form-group">
                                    <input type="hidden" name="subject[]" value="<?php echo $s->subject; ?>" />
                                </div>
                            </td>
                        </tr>

                        <?php $count++; ?>
                    <?php } ?>
                </tbody>
            </table>

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

        <?php echo form_close() //submit_ca_score ?>

Это мой контроллер:

public function submit_ca_score($id) { 
        $this->form_validation->set_rules('ca_score[]', 'CA Score', 'trim');
        $subjects = $this->input->post('subject', TRUE);
        $scores = $this->input->post('ca_score', TRUE);
        $y = $this->common_model->get_student_details_by_id($id);
        if ($this->form_validation->run()) {
            $data = array();
            foreach ($subjects as $key => $value) {
                $row = array();
                $row['admission_id'] = $y->admission_id;
                $row['subject'] = $value;
                $ca_score = "";
                foreach ($scores as $key => $value) {
                    $ca_score = $value;
                }
                $row['ca_score'] = $ca_score;
                $row['session'] = current_session;
                $row['term'] = current_term;
                $data[] = $row;
            }
            if ( ! empty($data) ) {
                $this->teacher_model->batch_insert_ca_score($id, $data); 
                $this->session->set_flashdata('status_msg', "{$subject} CA score submitted successfully for {$y->first_name}");
            } else {
                $this->session->set_flashdata('status_msg_error', "Error submitting CA score!");
            }
            redirect($this->agent->referrer());
        } else {
            $this->produce_report($id); //form validation fails, reload page with errors
        }
}

.... и модель: Teacher_model

public function batch_insert_ca_score($id, $data = array()) {
        $insert = $this->db->insert_batch('student_results', $data);    
        return $insert ? TRUE : FALSE;
}

Пакетная операция работает, но данные из поля ca_scoreне выбирается.Я знаю, что делаю что-то не так, но я просто не могу понять, что это такое.Я пытался это часами, в основном играю, но ничего не получается.Я только начал экспериментировать с пакетной операцией в коде воспламенителя.Может кто-нибудь, пожалуйста, укажите мне правильное направление.

1 Ответ

0 голосов
/ 25 июня 2018

Попробуйте это: -

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

$this->db->insert_batch('mytable', $data);

https://www.codeigniter.com/userguide2/database/active_record.html

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