Codeigniter - сохранение входных данных в нескольких массивах и в таблице БД - PullRequest
0 голосов
/ 23 апреля 2020

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

Контроллер:

$inquiry_id = $this->input->post('inquiry_id');
$postdata = $this->input->post();
$this->load->model('Design_model');
$this->Design_model->insertdata($postdata,$inquiry_id);

Модель:

function insertdata($data = array(), $inquiry_id){
        $sql = $this->db->query("select * from design where inquiry_id='".$inquiry_id."'");
        if($sql->num_rows() == 0){
                $sql_query = $this->db->insert('design', $data);
        }
        else{
            $this->db->where('inquiry_id', $inquiry_id);
            $this->db->update('design', $data);
        }          
    }

Выше работает нормально. Теперь я хотел бы добавить несколько полей в представление и сохранить в другой таблице базы данных. Необходимо исключить новые значения полей из сохраняемого массива $ postdata. Нужно найти лучший подход для этого. Я могу начать с некоторого имени для всех новых полей, чтобы мы могли добавить любой фильтр, если он доступен, для исключения из $ postdata.

Ответы [ 2 ]

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

Допустим, у вас есть следующие данные

$postdata = array("name"=>"xyz",
"email"=>"xyz@gmail.com",
"age"=>"40",
"gender"=>"Male",
"occupation"=>"Engineer"
);

Из которых первые 3 записи взяты из старых полей, а последние 2 - из новых полей, как вы сказали. Вам нужно найти последний индекс первого набора, то есть «3». Теперь вы можете сделать это.

$firstDb = array_splice($postdata,0,3);    //here 3 is index we are using to get first 3 records from $postdata
$secondDb = array_slice($postdata,0,3);    //here 3 is index we are using to get records from position 3 from $postdata

Вывод:

$firstDb = array("name"=>"xyz","email"=>"xyz@gmail.com","age"=>"40");
$secondDb = array("gender"=>"Male","occupation"=>"Engineer");

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

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

Вы можете использовать функцию elements () из помощника Array.

$array = array(
        'id' => 101,
        'title' => 'example',
        'desc' => 'something',
        'unwanted' => 'bla bla'
);

$filtered_array = elements(array('id','title','desc'),$array); //you can use this directly to the post data

$this->Design_model->insertdata($filtered_array,$inquiry_id);

Вы можете использовать array_merge () или array_pu sh ( ) функции для добавления новых полей в массив.

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