Codeigniter вставляет несколько строк в БД, используя один запрос из формы - PullRequest
0 голосов
/ 18 апреля 2020
  • Это модель:
public function saveShifts($data) { 

        $this->db->db_debug = FALSE;
        $error = NULL;
        if (!$this->db->insert('shifts', $data)) {
            $error = $this->db->error();
        }
        return $error; 
}
  • Это контроллер:
public function saveShifts(){

            $data = array (
                'user_id' => $_SESSION['id'],
                'day' => $this->input->post('day'),
                'time' => $this->input->post('time'),
                );

        $this->Shifts_model->saveShifts($data);
}
  • Это вид :

Я не могу опубликовать это, потому что оно исчезает, когда я публикую это.

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

MySql Структура БД выглядит так: когда ключи user_id и day

+---------+---------+--------+

| day      | time    | user_id|

+---------+---------+--------+

| Sunday  | morning | 1      |

+---------+---------+--------+

| Monday  | evening | 1      |

+---------+---------+--------+

Что ж, у меня проблема со вставкой нескольких строк в БД с помощью одного запроса. В представлении форма содержит переключатели для каждого пользователя на выбор на каждый день. Каждый раз вставляется только одна строка (последняя).

1 Ответ

0 голосов
/ 18 апреля 2020

Прежде всего вы должны обновить форму просмотра для поддержки значений на каждый день. Вы должны назвать свои радиокнопки day[] и time[].

Также для вставки нескольких строк в один запрос вы можете использовать метод CodeIgniter insert_bacth. При использовании этого метода ваш контроллер и модель будут выглядеть следующим образом:

  • модель
public function saveShifts($data) { 
    return $this->db->insert_batch('shifts', $data);
}
  • контроллер
public function saveShifts() {
    $data = array();

    $days = $this->input->post('day[]');
    $times = $this->input->post('time[]');

    foreach ($days as $key => $day) {
        $data []  = array(
            'user_id' => $_SESSION['id'],
            'day'     => $day,
            'time'    => $times[$key],
        );
    }

    $this->Shifts_model->saveShifts($data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...