Codeigniter большой формы вставки - PullRequest
0 голосов
/ 22 марта 2020

У меня есть форма с 120 полями для вставки в БД. Форма вставляется нормально, и подход, который я использовал, приведен ниже: я выбираю все поля из представления, как показано ниже в контроллере, и передаю массив ($ postdata) в файл модели для вставки.

**View**
$postdata = array(
'firstname' => $this->input->post('firstname'), //1st field
'lastname' => $this->input->post('lastname'), // 2nd field
'age' => $this->input->post('age'),
....
....
'test' => $this->input->post('test') // 120th field.
);
$this->Form_Model->insertdata($postdata);

**Model:**
function insertdata($data = array()) {
        $sql_query = $this->db->insert('form_insert', $data);
        redirect('Form');
}

Мой вопрос: есть ли лучший способ вставить. Этот подход кажется немного повторяющимся.

1 Ответ

0 голосов
/ 22 марта 2020

Если вы просто хотите получить массив всех представленных данных, вы можете сделать это следующим образом:

$postdata = $this->input->post();

Это означает, что все данные, представленные в форме, будут находиться в этом массиве. И если вы хотите удалить какой-либо конкретный элемент из этого массива, вы можете использовать unset().

Скажем, например, вы, возможно, назвали свою кнопку отправки как "submit_btn" следующим образом:

<input type="submit" name="submit_btn" />

тогда это значение будет в указанном выше возвращаемом массиве. Вы можете удалить это так:

$postdata = $this->input->post();

unset( $postdata['submit_btn']);

Кстати, у меня есть пара предложений. Часть logi c выполнена в Controller (вы ошибочно назвали ее View). A View просто для отображения. И Model - для связи с базой данных.

Кроме того, всегда было бы лучше выполнить некоторые проверки входных данных, которые вы получили от пользователя посредством отправки форм. Мы можем даже не знать, какие данные они отправляют!

И переместить redirect(), который вы использовали в Model, в Controller, откуда вы пытались вызвать этот метод insertdata(). В этом Model вы просто возвращаете значение (true или false или, может быть, что-то еще) и выполняете бизнес-логику c внутри Controller

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

Надеюсь, это поможет:)

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