не удалось сохранить данные мультиселекта в базе данных

89
11

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

    //----controller-----
public function portfolio1()
{
$this->form_validation->set_rules('first_content', 'First content', 'required');
$this->form_validation->set_rules('second_content', 'Second content', 'required');
$this->form_validation->set_rules('type', 'Type', 'required');

if ($this->form_validation->run()==TRUE)
{
$config['upload_path'] = FCPATH.'uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);

if ( $this->upload->do_upload('filename') )
{
//print_r($this->upload->data());die;
$data['first_content'] = $this->input->post('first_content');
$data['second_content'] = $this->input->post('second_content');
$data['type'] = $this->input->post('type');
$data['filename'] = $this->upload->data('file_name');

//Transfering data to Model
$this->Contact_model->portfolio1($data);
//Redirecting to success page
redirect(site_url('Home/portfolio1'));
}
else
{
$error = array('error' => $this->upload->display_errors());
print_r($error);die;
}
}
else
{
$this->load->view('portfolio1');

}
}

//----model----------
function portfolio1($data)
{
//saving records
$this->db->insert('portfolio1', $data);
}

//------view page-----

<?php echo form_open_multipart('Home/portfolio1'); ?>
<div style="padding-top:10%; padding-left:30%">
<div>
<textarea name="first_content" rows="4" cols="50"></textarea>
<span><?php echo form_error("first_content");?></span>
</div><br>
<div>
<textarea name="second_content" rows="4" cols="50"></textarea>
<span><?php echo form_error("second_content");?></span>
</div><br>
<div>
<select name="type" multiple>
<option value="*">All Works</option>
<option value=".bootstrap">Creative</option>
<option value=".html">Photography</option>
<option value=".wordpress">Web Development</option>
</select>
<span><?php echo form_error("type");?></span>
</div><br>
<div>
<input type="file" name="filename">
<span><?php echo form_error("filename");?></span>
</div><br>
<button type="submit" class="btn btn-default">Submit</button>
</div>
</form>

спросил(а) 2018-07-07T09:44:00+03:00 2 года, 11 месяцев назад
1
Решение
63

Измените свою многосекундную часть следующим образом.

<select name="type[]" multiple>
<option value="*">All Works</option>
<option value=".bootstrap">Creative</option>
<option value=".html">Photography</option>
<option value=".wordpress">Web Development</option>
</select>

Я изменяю имя от type к type[] поэтому вы получите все выбранные опции.

ОБНОВИТЬ

if ( $this->upload->do_upload('filename') )
{
//print_r($this->upload->data());die;
$data['first_content'] = $this->input->post('first_content');
$data['second_content'] = $this->input->post('second_content');
$data['type'] = implode(",",$this->input->post('type'));
$data['filename'] = $this->upload->data('file_name');

//Transfering data to Model
$this->Contact_model->portfolio1($data);
//Redirecting to success page
redirect(site_url('Home/portfolio1'));
}

Теперь он сохранит type как запятую, разделенные в вашей таблице.

ответил(а) 2018-07-07T09:59:00+03:00 2 года, 11 месяцев назад
63

Если ваш раскрывающийся список мультиселектив, вы должны использовать массив в имени атрибута select.

<select name="type[]" multiple>

Вы получите все выбранное значение в переменной post, как

<?Php $_POST["type"]; ?>

ответил(а) 2018-07-07T10:03:00+03:00 2 года, 11 месяцев назад
63

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

Можете ли вы упомянуть, в каком имени вы публикуете свой многосегмент, и я не могу найти вашу страницу просмотра, чтобы проверить, как ваши атрибуты указаны в выпадающем меню

ответил(а) 2018-07-07T09:51:00+03:00 2 года, 11 месяцев назад
45

У меня также была эта проблема раньше, но у меня была работа на стороне сервера.

Обычно вы получаете значения массива, которые в вашем случае в $ _POST ['type'], правильно? Итак, что вы хотите сделать, так это...

$type = implode(',', $_POST['type']);

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

$type = explode(',', $_POST['type']);

Я просто использую переменную $ _POST для единообразия, но, я думаю, вы уже поняли эту идею. Надеюсь это поможет!

ответил(а) 2018-07-07T13:22:00+03:00 2 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема