问题是当我点击“保存”按钮时,数据会列在数据库中。在这种情况下,用户的名字在头部保持不变,只有当我执行logged_in时它才会改变。如何在不离开仪表板的情况下在会话的帮助下更改名称。
型号:
function get_user_by_id($id){
$user = $this->ci->db
->where($this->identifier_field, $id)
->get($this->user_table);
$user_details = $user->row();
return $user_details;
}
function get_user($data)
{
$this->ci->db->select('*');
$this->ci->db->from('users');
$this->ci->db->where('id', $data);
$query = $this->ci->db->get();
$result = $query->result();
return $result;
}
// Update Query For Selected Student
function update_user($id, $data)
{
$this->ci->db->where('id', $id);
$this->ci->db->update('users', $data);
}
控制器:
function show_user()
{
$data = array(
'lang' => $lang,
'test_condition' => false,
'reg_condition' => false,
'current_page' => '',
'head_title' => $lang['profile']
);
$id = $this->session->userdata('identifier');
$data['user'] = $this->authentication->get_user_by_id($id);
/*$data['single_user'] = $this->authentication->get_user($id);*/
$this->load->view('profile', $data);
}
function profile()
{
$id = $this->input->post('id');
if (isset ($id)) {
$data = array(
'email' => $this->input->post('email'),
'birthday' => $this->input->post('birthday'),
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'language_id' => $this->input->post('language'),
);
$this->authentication->update_user($id, $data);
}
$this->show_user();
}
答案 0 :(得分:0)
根据我对这个问题的理解,这就是你的问题所在
function profile(){
$id = $this->input->post('id');
if (isset ($id)) {
$data = array(
'email' => $this->input->post('email'),
'birthday' => $this->input->post('birthday'),
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'language_id' => $this->input->post('language'),
);
$this->authentication->update_user($id, $data);
}
$this->show_user();
}
现在让我解释为什么我感觉如此,
首先,在您的个人资料功能中,您从帖子数据中定义了$ id,但是查看了show_user方法,您从会话中定义了$ id
$id = $this->session->userdata('identifier');
接下来检查是否设置了$ id,现在是否设置了$ id,调用show_user函数
$this->show_user();
现在这意味着,如果未设置$ id,则不执行更新过程,但仍然调用show_user函数,也就是说数据库中的值不会更改,但是您调用show_function显示更新的详细信息
解决方案:首先,您应该从会话中定义$ id而不是发布。然后在if块中插入show_user函数调用,因此只有在更新完成时才会调用它,否则执行其他操作。所以你的个人资料功能应该是这样的
function profile(){
$id = $this->session->userdata('identifier');
if ($id != null) {
$data = array(
'email' => $this->input->post('email'),
'birthday' => $this->input->post('birthday'),
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'language_id' => $this->input->post('language'),
);
$this->authentication->update_user($id, $data);
redirect(base_url('classname/show_user'));
}else{
//do something else
}
}
我希望这会帮助你。如果您发现任何困难,请发表评论并进行排序
答案 1 :(得分:0)
单击“保存”按钮时。使用它:
$this->db->insert_id();
尝试获取最后插入的ID并使用搜索查询找到该记录,如下所示:
$query = $this->db->get_where('table_name',array('id'=>last inserted id));
$query = $query->row_array();
然后在此更新会话的帮助下:
$this->session->set_userdata('session name',$query);