我正在使用Chosen JS插件,以使我的选择框更酷,更漂亮;但是,通过POST将此数据发送到PHP时,某些事情并不完全正确。注意,我也在使用codeigniter。
这是我的HTML:
<select id="mySelect" name="multiple[]" multiple="multiple">
<option value="1">Something</option>
<option value="2">Something</option>
<option value="3">Something</option>
<option value="4">Something</option>
</select>
这是我的JS:
$('#mySelect').chosen({
max_selected_options: 4,
place_holder_text_multiple: "Pick your poison(s)"
});
最后,我的CodeIgniter模型,我在其中捕获表单发送的数据并将其插入数据库。
// I want them to be introduced in the column of the database all together,
// separated by commas.
$string = implode(",", $this->input->post('multiple'));
但是,这只会获得用户引入的第一个值。
喜欢,如果他/她选择"1, 4, 5"
,
它只获得"1"
。
我错过了什么吗?先谢谢你。
更新我还检查了chrome的控制台,以检查数据是否正在发送。这就是我得到的。我没有足够的声誉来发布图片,但这里是链接。
答案 0 :(得分:1)
我没有足够的声誉来评论。
尝试将其强制转换为数组
$string = implode(",", (array) $this->input->post('multiple'));
或循环数组并将值附加到字符串
$msg = "";
foreach($this->input->post('multiple') as $key=>$val){
$msg = $msg . "," . $val;
}
答案 1 :(得分:0)
对我来说,将数据提交到数据库的原因
<div>
<div class="col-12 col-md-6">
<label>Chosen Multi Select with search</label>
<select data-placeholder="Select Countries..." name = "countries[]" class="chosen_select form-control" tabindex="2" multiple="">
<option value="1">Republic of Biafra</option>
<option value="2">Arewa Republic</option>
<option value="3">Oduduwa Republic</option>
<option value="4">Abiriba</option>
</select>
</div>
<button type="submit" class="btn btn-sm">Submit</button>
</div>
然后,对于我的控制器,我尝试检查提交的输入字段名称country []是否具有如下所示的值,然后通过我的模型提交给数据库:
if ( $this->input->post() ){
$data = $this->input->post('countries');
print_r($data);
$this->load->model->('country);
$this->country->add($data);
}
当我选择Biafra,Abiriba和Oduduwa共和国时,我的输出变成了
Array
(
[0] => Republic of Biafra
[1] => Abiriba
[2] => Oduduwa Republic
)
由于提交的字段位于数组中,因此我将数据循环到国家/地区模型中,以便将数组变成单个字符串,如下所示:
class Country {
public function add ($data = ""){
if (isset($data) && !empty($data)){
// print_r($data);
$str = '';
foreach ($data as $value) {
$str .= $value;
$str .= ', '; // add separator between sub-arrays
}
$str = rtrim($str, ', '); // remove last separator
print_r($str); // print to see output of what we just did
// Here you can countinue your database command
}
}
}
print_r()
函数的输出为:
"1, 4, 3"
希望这对您有帮助