关于我的项目,我想要使用 voucher_no 和金额插入每employee{employee_no}
多个描述,以及许多支持文档,所以我创建了我的视图页面以获取描述和支持文档添加多个字段。
所以我可以根据需要添加许多字段,但是当我插入没有描述和支持文档的数据时,我想将这些数据正常插入到我的数据库中。
它完美无缺,但我的要求是使此代码插入多个描述和支持文档。
这是我的View page :
字段到描述和支持文档
<div class="form-group">
<div class="row colbox">
<div class="col-sm-offset-2 col-lg-8 col-sm-8 text-left">Description</div>
<div class="field_wrapper">
<input type="textarea" name="descrip[]" value="" size="35px" /><input type="text" name="voucher_no[]" value="" size="7px"/><input type="text" name="price[]" value=""size="7px"/>
<a href="javascript:void(0);" class="add_button" title="Add field"><img src="<?php echo base_url('images/add-icon.png'); ?>"/></a>
</div></div></div>
<div class="form-group">
<div class="row colbox">
<div class="col-sm-offset-2 col-lg-8 col-sm-8 text-left">SUPPORT DOCUMENT</div><br />
<div class="field_upload">
<input type="file" name="field_upload[]" value="" size="35px" />
<a href="javascript:void(0);" class="add_butt" title="Add field">
<img src="<?php echo base_url('images/add-icon.png'); ?>"/></a>
</div></div></div>
我的控制器:
function index()
{
//fetch data from department and designation tables
$data['department'] = $this->employee_model->get_department();
$data['designation'] = $this->employee_model->get_designation();
//$data['descrip'] = $this->employee_model->insert_descriptions();
//set validation rules
$this->form_validation->set_rules('employeeno', 'Employee No', 'trim|required|numeric');
$this->form_validation->set_rules('employeename', 'Employee Name', 'trim|required|callback_alpha_only_space');
$this->form_validation->set_rules('department', 'Department', 'callback_combo_check');
$this->form_validation->set_rules('designation', 'Designation', 'callback_combo_check');
$this->form_validation->set_rules('hireddate', 'Hired Date');
$this->form_validation->set_rules('salary', 'Salary', 'required|numeric');
$this->form_validation->set_rules('document', 'Document', 'trim');
$this->form_validation->set_rules('descrip', 'Description', 'trim');
if ($this->form_validation->run() == FALSE)
{
//fail validation
$this->load->view('employee_view', $data);
}
else
{
//pass validation
$data = array(
'employee_no' => $this->input->post('employeeno'),
'employee_name' => $this->input->post('employeename'),
'department_id' => $this->input->post('department'),
'designation_id' => $this->input->post('designation'),
'hired_date' => @date('Y-m-d', @strtotime($this->input->post('hireddate'))),
'salary' => $this->input->post('salary'),
'description' => $this->input->post('descrip'),
'document' => $this->input->post('filed_upload'),
);
//insert the form data into database
$this->db->insert('tbl_employee', $data);
我知道我想对 descriptons 和支持文档使用foreach
循环,但我不知道如何使用它
答案 0 :(得分:1)
您可以使用insert_batch
对于Eg:
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name' ,
'date' => 'Another date'
)
);
$this->db->insert_batch('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')
答案 1 :(得分:1)
你有三个解决问题的方法。
在描述和文档数组的基础上循环插入数组。(这些都将作为数组发布) 然后将其用于批量插入
$this->db->insert_batch();
您可以使用implode并将这些数组转换为逗号分隔值,并将其插入员工表。我也不会喜欢这个。
第三个是最好的。制作另外两个表描述和文档(要存储多个描述相关数据和用于插入多个文档的文档),这两个表将包含employee表的外键。一个员工条目和其他描述和文档条目。此链接可以帮助您进行查询。
http://www.codeigniter.com/userguide2/database/active_record.html#update
答案 2 :(得分:0)
您可以获取记录的计数,然后使用for循环创建要插入数据库的数据数组。
$records = count($_POST['employee_no'];
for($i=0; $i<$records; $i++) {
$data = array(
'employee_no' => $_POST['employeeno'][$i],
'employee_name' => $_POST['employeename'][$i]
..etc
);
$this->db->insert('tbl_employee', $data);
}