Столкнулся с проблемой при разработке конструктора форм обратной связи. Сначала в панели управления создаются поля и записываются в базу данных.
Потом для каждого поля формируется код. Для селекта с множественным выбором это происходит так
$fields[$i]['html'] = '<select name="'.$fields[$i]['id'].'"';
if ($fields[$i]['config']['multi'] == 1) $fields[$i]['html'] .= ' multiple="multiple" ';
$fields[$i]['html'] .= ' size="'.$size.'">';
foreach ($items as $item){
$fields[$i]['html'] .= '<option value="'.$item.'">'.$item.'</option>';
}
$fields[$i]['html'] .= '</select>';
Далее данные формы собираются с помощью jQuery функции serializeArray() и с помощью Ajax отправляются в php-контроллер codeigniter.
В контроллере поля получаю следующим образом:
foreach ($fields as $field){
if ($field['type'] == 'checkbox'){
if($this->input->post($field['id']) == 0) $post = lang("Да", 'cf_constructor');
else $post = lang("Нет", 'cf_constructor');
} elseif ($field['type'] == 'menu' && $field['config']['multi'] == 1){
for ($i = 0; $i < count($this->input->post($field['id'])); $i++){
$post_arr[$i] = $this->input->post($field['id']);
}
$post = implode(",", $post_arr);
} else {
$post = $this->input->post($field['id']);
}
$message .= $field['title'].': '.strip_tags(nl2br($post)).'<br/>';
}
Собираю всё это в сообщение и отправляю по e-mail.
Проблема в том, что когда в селекте выбрано несколько пунктов, контроллер принимает только последний из них, а надо, чтобы принял все.
Как это можно сделать?