Я работаю над проектом, в котором мне нужно добавить несколько выбранных значений в один столбец, используя Php CodeIgniter.Вот фактическое постановка задачи: у меня есть столбец INT total_persons для хранения общего количества людей (т.е. 5) и столбец VARCHAR person_names , в котором будут храниться имена этих 5 человек.
Чтобы выбрать нескольких пользователей из выпадающего списка, я использую библиотеку Select2.Но когда я отправляю данные, появляется следующее сообщение об ошибке
Поле «Персональные имена» является обязательным. Конечно, потому что я установил правила проверки в форме следующим образом:
$ this-> form_validation-> set_rules ('person_names', 'Persons Names', 'required');
Я не понимаю, почему он не принимает никакого значениякогда выбрано 5 имен пользователей.
Если я добавляю идентификатор одного пользователя (оставляя столбец INT) вместо нескольких выбранных значений, он работает нормально и отправляет данные в БД.Но когда я пытаюсь сохранить несколько имен пользователей, выдает ошибку, которую я вставил выше.
Вот мой Expense.php код из контроллера
function add()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('expense_type','Expense Type','required');
$this->form_validation->set_rules('person_names','Person Names','required');
$this->form_validation->set_rules('total_persons','Total Persons','required');
$this->form_validation->set_rules('expense_amount','Expense Amount','required');
$this->form_validation->set_rules('expense_details','Expense Details','required');
$this->form_validation->set_rules('date_added','Date Added','required');
if($this->form_validation->run())
{
$params = array(
'expense_type' => $this->input->post('expense_type'),
'total_persons' => $this->input->post('total_persons'),
'person_names' => $this->input->post('person_names'),
'expense_amount' => $this->input->post('expense_amount'),
'expense_details' => $this->input->post('expense_details'),
'date_added' => $this->input->post('date_added'),
'update_date' => $this->input->post('update_date'),
);
print_r($params);
exit();
$expense_id = $this->Expense_model->add_expense($params);
redirect('expense/index');
}
else
{
$this->load->model('Expense_type_model');
$data['all_expense_type'] = $this->Expense_type_model->get_all_expense_type();
$this->load->model('User_model');
$data['all_users'] = $this->User_model->get_all_users();
$data['_view'] = 'expense/add';
$this->load->view('layouts/main',$data);
}
}
Expense_Model.php
function add_expense($params)
{
$this->db->insert('expense',$params);
return $this->db->insert_id();
}
view.php
<div class="col-md-6">
<label for="person_names" class="control-label"><span class="text-danger">*</span>Person Names</label>
<div class="form-group">
<select name="person_names[]" class="form-control multiselect" multiple="multiple">
<option value="">select user</option>
<?php
foreach($all_users as $user)
{
$selected = ($user['user_name'] == $this->input->post('person_names')) ? ' selected="selected"' : "";
echo '<option value="'.$user['user_name'].'" '.$selected.'>'.$user['user_name'].'</option>';
}
?>
</select>
<span class="text-danger"><?php echo form_error('person_names');?></span>
</div>
</div>
Если я не пропущу какой-то ключевой момент, код должен добавить пять имен вполе user_name следующим образом? ["user1", "user2", "user3", "user4", "user5"] (это мое предположение, извинения, если я догадалась)
Может кто-топомогите разобраться, где я совершаю ошибку?
Заранее большое спасибо.