Невозможно вставить несколько данных флажка в базу данных - PullRequest
0 голосов
/ 14 апреля 2019

ОБНОВЛЕНО. У меня проблема с вставкой нескольких данных флажка в базу данных.

Вот мой взгляд

 <?php 
            $i = 0;
            $qArr = array();
            $qArrc = 0;
            $qArr1 = array();
            $qArrc1 = 0;
            $uArr = array();
            $u = 0;
            foreach($questions->result() as $q){ ?>
                <input type="checkbox" name="check[<?php echo $i; ?>]" value="<?php echo $qArr[$qArrc++] = $q -> questions; ?>"> <?php echo $q->questions; ?> <br>
                <input class="form-control" value="<?php echo $uArr[$u++] = $this->session->userdata('user_id'); ?>" name="hidden[<?php echo $i; ?>]" type="hidden">
                <input class="form-control" value="<?php echo $qArr1[$qArrc1] = $q->id; ?>" name="hidden1[<?php echo $i; ?>]" type="hidden">
            <?php 
            $i++;                               
            }?>
            <button type="submit" name="submit" class="btn btn-primary">Submit</button>

Вот мой контроллер

                for($i = 0; $i<count($this->input->post('check')); $i++){
                $data1 = array(  
                    'question' => $this->input->post('check')[$i],
                    'speaker_id' => $this->input->post('hidden')[$i],
                    'question_id' => $this->input->post('hidden1')[$i]
                );  
                $this->input->post('submit');  

                     $this->Speaker_Model->insert_speakerfeedback($data1);  


            }redirect('speaker/createfeedback');

Вот моя модель

      public function insert_speakerfeedback($data1){
        $this->db->insert("speakerdata", $data1);
    }

1 Ответ

1 голос
/ 14 апреля 2019

Измените ваши for циклы:

for($i = 0; $i<count($this->input->post('check')); $i++){

, чтобы использовать foreach вместо`:

foreach ($this->input->post('check') as $i => $value) {

Так что будет невозможно получить неопределенный индекс, если вы пропустите какой-либо флажок.И линия перенаправления должна быть за пределами петель.

Для массовой вставки можно использовать функцию insert_batch.

В цикле измените:

$data1 = array(

на

$data1[] = array(

Такон не будет перезаписываться на каждой итерации.

А в модели изменить:

$this->db->insert("speakerdata", $data1);

на:

$this->db->insert_batch("speakerdata", $data1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...