我有一个看起来像这样的数组
Array ( [0] => test1 [1] => test4 [2] => test2 )
我使用Codeigniter内置函数
从我的数据库中获取了这个值每当我尝试将此值重新插入我的数据库时,它会插入索引而不是值本身
正如您所看到的,不是将test1,test4,test2存储在username下的字段中,而是存储索引0,1,2。
如何解决这个问题?
参考文献: @MichaelK
TABLE:
查看
<div class="panel-body">
<?php echo form_open('admin/add_recommended'); ?>
<div class="form-group col-lg-12">
<label>Recommended Employees:</label>
<?php echo form_error('skillsRequired'); ?>
<?php
foreach ($users as $row) {
$user[] = $row->username;
}
print_r($user);
echo form_multiselect('user[]', $user, $user, array('class' => 'chosen-select', 'multiple style' => 'width:100%;'));
?>
</div>
</div>
<div class="panel-footer">
<?php echo form_submit(array('id' => 'success-btn', 'value' => 'Submit', 'class' => 'btn')); ?>
<?php echo form_close(); ?>
</div>
CONTROLLER
public function add_recommended() {
$this->form_validation->set_rules('skillsRequired', 'Skills Required', 'min_length[1]|max_length[55]');
$lid = $this->admin_model->getID();
foreach ($lid as $id) {
$last_id = $id['projectID'];
$data['users'] = $this->admin_model->getUsers($last_id);
}
$this->load->view('admin/projects/rec-employee', $data);
if ($this->form_validation->run() === FALSE) {
//$this->load->view('admin/projects/rec-employee');
} else {
$users = $this->input->post('user');
print_r($users);
foreach ($users as $user) {
$data = array(
'projectID' => $last_id,
'username' => $user
);
$id = $this->admin_model->insert('projectemp', $data);
}
if ($id) {
$this->session->set_flashdata('msg', '<div class="alert alert-success" role="alert">Success! New Project has been added.</div>');
redirect('admin/add_recommended');
}
}
}
答案 0 :(得分:0)
为什么在控制器中使用$data['users']
?其中$ users包含索引值。你试试这个
// CONTROLLER
$data = $this->admin_model->getUsers($last_id); //last id is the latest id.
// VIEW
foreach ($data as $row) {
$user[] = $row->username;
}
答案 1 :(得分:0)
男孩这些对于一个小问题的评论太多了。
首先@ blakcat7,我希望你不会介意如果我建议你的数据库架构稍有改动。使用索引和适当的规范化总是有帮助的。我在我的机器上模拟了你的情况。
这是您的用户表,我在此表中添加了一个ID。
它是你的项目表,只是更改了一些字段名称,你可以使用自己的
这是您创建联接的表格,虽然您可以在项目表中使用user_id或posting_by字段来解决您的问题
现在,在我看到它的情况下,您的数据库表中有用户,您还添加了项目,但现在您想要将该项目与该用户分配或关联。
简单地创建一个可以看到项目和用户的视图
由Controller函数
呈现public function assignProject()
{
$data['projects']=$this->admin_model->getAll('projects');
$data['users']=$this->admin_model->getAll('user');
if($_POST)
{
$this->admin_model->assignUser($_POST);
$data['success']='User Assigned';
$this->load->view('assignProjects',$data);
}
else
{
$this->load->view('assignProjects',$data);
}
}
以下标记呈现的视图
<form action="" method="post">
<div class="form-group">
<label>Project</label>
<select name="project" class="form-control">
<?php for($i=0;$i<count($projects);$i++){?>
<option value="<?php echo $projects[$i]['id']?>"><?php echo $projects[$i]['title']?></option>
<?php }?>
</select>
</div>
<div class="form-group">
<label>Users</label>
<select name="user" class="form-control">
<?php for($i=0;$i<count($users);$i++){?>
<option value="<?php echo $users[$i]['id']?>"><?php echo $users[$i]['username']?></option>
<?php }?>
</select>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Assing User</button>
</div>
</form>
只需点击“分配用户”,模型中的以下功能就会将其保存在项目用户表中
public function assignUser($data)
{
$record=array(
'user_id'=>$data['user'],
'project_id'=>$data['project'],
);
$this->db->insert('user_projects',$record);
}
请记住,始终在表中使用索引(ID)字段,会使您的数据库迭代生活更简单
答案 2 :(得分:0)
好的,每个人都好,谢谢你们所有人的帮助。它真的对我很有意义。就像2天的争斗一样,我最终解决了我的问题。 ^ _ ^
特别感谢Michael K帮助我指出问题,感谢Malik Mudassar让我了解如何做到这一点。
<强>控制器强>
public function add_recommended() {
$lid = $this->admin_model->getID();
foreach ($lid as $id) {
$last_id = $id['projectID'];
}
$data['users'] = $this->admin_model->getUsers($last_id);
$this->load->view('admin/projects/rec-employee', $data);
if ($_POST) {
$users = $this->input->post('recommended');
foreach ($users as $user):
$data = array(
'projectID' => $last_id,
'userID' => $user
);
$id = $this->admin_model->insertRecEmp($data);
endforeach;
$this->session->set_flashdata('msg', '<div class="alert alert-success" role="alert">Success! New Project has been added.</div>');
redirect('admin/add_project');
}
}
<强>模型强>
public function getUsers($id) {
$this->db->select('*');
$this->db->from('users_skills e');
$this->db->join('projects_skills p', 'e.skillsID = p.skillsID');
$this->db->join('users u', 'u.userID = e.userID');
$this->db->where('p.projectID', $id);
$this->db->group_by('e.userID');
$this->db->order_by('e.percentage', 'desc');
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$result[] = $row;
}
return $result;
}
return false;
}
public function getID() {
$this->db->select_max('projectID');
$this->db->from('projects');
$query = $this->db->get();
$result = $query->result_array();
return $result;
}
public function insertRecEmp() {
$this->db->insert('projects_users', $data);
}
查看强>
<form action="add_recommended" method="post">
<select name="recommended[]" class="chosen-select" multiple title='Select Skills' multiple style="width: 100%;">
<?php for ($i = 0; $i < count($users); $i++) { ?>
<option value="<?php echo $users[$i]->userID ?>"><?php echo $users[$i]->username ?></option>
<?php } ?>
</select>
</form>
我完全改变了我的数据库和我的PHP函数以进行多选