CI: основная деталь для формы регистрации пользователя не работает

Я хочу создать регистрационную форму пользователя, где я позволю пользователю размещать столько электронных писем и телефонов, сколько они хотят, точно так же, как контакты Google.

Я уже создал форму, которая позволяет пользователю динамически добавлять или удалять поля ввода для электронных писем и телефонов. вот изображение этого:
Форма регистрации пользователя

это сценарий модели, которую я использую ..

public function store_email() {
if (! $this->validate_email()) return FALSE;
$this->db->trans_begin();
try {
$this->db->insert($this->table_user, $this);
$id = $this->db->insert_id();
foreach ($this->email as $key => $value) $this->email[$key]['user_id'] = $id;
$this->db->insert_batch($this->table_email, $this->email);
} catch (Exception $e) {
return FALSE;
}
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return FALSE;
} else {
$this->db->trans_commit();
return TRUE;
}
}
public function store_phone() {
if (! $this->validate_phone()) return FALSE;
$this->db->trans_begin();
try {
$this->db->insert($this->table_user, $this);
$id = $this->db->insert_id();
foreach ($this->phone as $key => $value) $this->phone[$key]['user_id'] = $id;
$this->db->insert_batch($this->table_phone, $this->phone);
} catch (Exception $e) {
return FALSE;
}
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return FALSE;
} else {
$this->db->trans_commit();
return TRUE;
}
}

это скрипт контроллера, который я использую ..

public function store() {

$this->model->first_name = $this->input->post('first_name', TRUE);
$this->model->middle_name = $this->input->post('middle_name', TRUE);
$this->model->last_name = $this->input->post('last_name', TRUE);
$this->model->email = [];
$this->model->phone = [];

foreach ($this->input->post('label_id', TRUE) as $key => $value) $this->model->email[$key]['label_id'] = $value;
foreach ($this->input->post('email', TRUE) as $key => $value) $this->model->email[$key]['email'] = $value;
foreach ($this->input->post('label_id', TRUE) as $key => $value) $this->model->phone[$key]['label_id'] = $value;
foreach ($this->input->post('phone', TRUE) as $key => $value) $this->model->phone[$key]['phone'] = $value;

if ($this->model->store_email() === TRUE) {
if ($this->model->store_phone() === TRUE) {
$notification = 'Register success! You may login now!';
} else {
$notification = 'Register fail!';
}
} else {
$notification = 'Register fail!';
}

$this->CI->session->set_flashdata('Success',$notification);
redirect(base_url().'login');

}

Я запускаю этот код, и он дает мне ошибку, говоря преобразование массива в строку, и я не могу сохранить какие-либо данные в базе данных.
Любая помощь могла бы быть полезна.

Обновлено:

вот ошибка, которую я получаю:

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: database/DB_query_builder.php

Line Number: 1496

Backtrace:

File: C:\xampp\htdocs\ci-master-detail-trans\application\models\Customer_model.php
Line: 103
Function: insert_batch

File: C:\xampp\htdocs\ci-master-detail-trans\application\controllers\Customer.php
Line: 50
Function: store

File: C:\xampp\htdocs\ci-master-detail-trans\index.php
Line: 292
Function: require_once

таблица, которую я использую для этого:

  • Table_User (идентификатор, имя, имя пользователя, пароль)
  • Table_Email (id, email, user_id, label_id)
  • Table_Phone (id, телефон, user_id, label_id)
  • Table_Label (идентификатор, метка)

0

Решение

Для Ошибка преобразования массива в строку вы можете использовать функцию IMplode, как показано ниже:

 $string_version = implode(',', $original_array)

Пожалуйста, отредактируйте свой пост и добавьте всю ошибку, чтобы мы могли помочь вам.

0

Другие решения

добавить эту строку непосредственно перед кодом batch_insert

 $phone_details = implode(',',$this->phone);

Затем внесите изменения в пакетную вставку, как показано ниже

 $this->db->insert_batch($this->table_phone, $phone_details); // phone number will be stored in , separated format i.e. 1234567890,3216549870
0

По вопросам рекламы [email protected]