问题描述
我正在尝试选择多个人员,并将所有人员插入数据库中项目表的同一行和同一列中。但是现在我只能在数据库中插入一个值。能帮我如何将所有选定的数据插入数据库中? 这是我的Project.PHP控制器
public function index ()
{
// print_r($_REQUEST);
// die;
$data['company_name'] = $this->project_model->getAllCompanyName();
$data['project'] = $this->project_model->getProjectDetails();
//echo "<pre>";
//print_r($data);die;
$this->load->view('admin/project/index',$data);
}
function add()
{
$this->form_validation->set_rules('Pname','Project Name','required');
$this->form_validation->set_rules('Cname','Client Name','required');
$this->form_validation->set_rules('PassignTo','Company','required');
$this->form_validation->set_rules('manager','Manager','required');
$this->form_validation->set_rules('staff','Support Staff','required');
$data['company_name'] = $this->project_model->getAllCompanyName();
$data['project'] = $this->project_model->getProjectDetails();
if ($this->form_validation->run() ==true)
{
$this->project_model->add();
$this->session->set_flashdata ('success','Project Added Sucessfully');
// print_r($_REQUEST);
// die;
// echo "<pre>";
redirect('admin/project/index',$data);
}
else{
$this->load->view('admin/project/add',$data);
}
public function getManager()
{
//echo json_encode ("sdf"); die;
//print_r($_REQUEST);
//die;
$company_name = $this->input->post('company_name');
$getallmanager = $this->project_model->get_manager_query($company_name);
$getallstaff = $this->project_model->get_all_staff($company_name);
$all_the_mangers = '';
$all_the_staffs = '';
if(count($getallmanager)>0)
{
foreach ($getallmanager as $manager){
$all_the_mangers .='<option value="' .$manager->first_name.'">'.$manager->first_name.'</option>';
}
}
if(count($getallstaff)>0)
{
foreach ($getallstaff as $staff){
$all_the_staffs .='<option value="' .$staff->id.'">'.$staff->first_name.'</option>';
}
}
$result = array('manager'=>$all_the_mangers,'staffs'=>$all_the_staffs);
echo json_encode($result);die;
}
这是Project_model.PHP模型
function add()
{
$arr['project_name'] = $this->input->post('Pname');
$arr['client_name'] = $this->input->post('Cname');
$arr['company'] = $this->input->post('PassignTo');
$arr['project_manager'] = $this->input->post('manager');
$arr['support_staff'] = $this->input->post('staff');
$this->db->insert('projects',$arr);
}
public function get_all_staff($company_name)
{
$query = $this->db->get_where('user_login',array('company_name' => $company_name,'role !='=>'manager'));
return $query->result();
}
这是视图
<div class="form-group col-md-4">
<label for="pwd">Add Support Staff</label>
<select id="addStaffMulti" placeholder="Selecct" multiple="multiple" name="staff" value="<?PHP echo set_value('staff'); ?>">
<div class="alert-danger"><?PHP echo form_error('staff'); ?></div>
<option value="">Select Staff</option>
</select>
</div>
这是脚本
<script type="text/javascript">
$(document).ready(function(){
$('#company').on('change',function() {
var company_name = $(this).val();
if(company_name == '')
{
$('#manager').prop('disabled',true);
$('#addStaffMulti').prop('disabled',true);
}
else
{
$('#manager' ).prop('disabled',false);
$('#addStaffMulti').prop('disabled',false);
var url = "<?PHP echo base_url()?>getManager";
//alert(url);
//return false;
$.ajax({
url:"<?PHP echo base_url()?>getManager",type: "POST",data: { 'company_name' : company_name},dataType:'json',success: function(data){
//alert('ok');
console.log(data);
$('#manager').html(data.manager);
$('#addStaffMulti').html(data.staffs);
$('#addStaffMulti').multiselect('rebuild');
},error: function(event){
console.log(event);
alert('Error occur...');
}
});
}
});
});
</script>
解决方法
您应该将db字段类型更改为text,并且在插入该多字段时,需要对其进行json_encode($ your_array)。这将对数组进行字符串化。 在需要阅读之后,应该使用反向函数-json_decode($ your_array,true)。第二个参数是关于数组还是对象。
因此该行将变为:
$arr['support_staff'] = json_encode($this->input->post('staff'));
阅读之后:
$support_staff = json_decode($this->db->support_staff,true );
,
project_model.php
function add()
{
$arr['project_name'] = $this->input->post('Pname');
$arr['client_name'] = $this->input->post('Cname');
$arr['company'] = $this->input->post('PassignTo');
$arr['project_manager'] = $this->input->post('manager');
$arr['support_staff'] = $this->input->post('staff');
$value = implode(",",($this->input->post('staff')));
$arr['support_staff'] = $value;
$this->db->insert('projects',$arr);
}
project.php视图
<div class="form-group col-md-4">
<label for="pwd">Add Support Staff</label>
<select id="addStaffMulti" placeholder="Selecct" multiple="multiple" name="staff[]" value="<?php echo set_value('staff'); ?>">
<div class="alert-danger"><?php echo form_error('staff'); ?></div>
<option value="">Select Staff</option>
</select>
</div>