2017-07-26 119 views
2

我试图编辑用户帐户,但是当我加载视图时,它不显示用户的默认帐户信息。以下是我的模型视图和控制器。任何帮助将不胜感激。 我有一个包含所有用户信息的数据库。所以我想检索它并执行更新功能。CodeIgniter中的帐户编辑

控制器

/** 
    * This function is used load user edit information 
    * @param number $userId : Optional : This is user id 
    */ 
    function editOld($userId = NULL) 
    { 
      if($userId == null) 
      { 
       redirect('pages/settings'); 
      } 

      $data['userInfo'] = $this->settings_model->getUserInfo($userId); 

      $data['title'] = 'Settings'; 

      $this->load->view('templates/header'); 
      $this->load->view('pages/settings', $data); 
      $this->load->view('templates/footer'); 

    } 

    /** 
    * This function is used to edit the user information 
    */ 
    function editUser() 
    { 
      $this->load->library('form_validation'); 

      $userId = $this->session->userdata('user_id'); 

      $this->form_validation->set_rules('name','Full Name','trim|required|max_length[128]|xss_clean'); 
      $this->form_validation->set_rules('email','Email','trim|required|valid_email|xss_clean|max_length[128]'); 
      $this->form_validation->set_rules('username','Username','trim|required|xss_clean|min_length[3]'); 
      $this->form_validation->set_rules('birthday','Birthday','required|xss_clean'); 
      $this->form_validation->set_rules('gender','Gender','required|xss_clean'); 
      $this->form_validation->set_rules('mobile','Mobile Number','required|min_length[9]|xss_clean'); 

      if($this->form_validation->run() == FALSE) 
      { 
       $this->editOld($userId); 
      } 
      else 
      { 
       $name = $this->input->post('name'); 
       $username = $this->input->post('username'); 
       $email = $this->input->post('email'); 
       $bio = $this->input->post('bio'); 
       $mobile = $this->input->post('mobile'); 
       $birthday = $this->input->post('birthday'); 
       $gender = $this->input->post('gender'); 

       $userInfo = array(); 

       if(empty($password)) 
       { 
        $userInfo = array('email'=>$email, 'username'=>$username, 'name'=>$name, 
            'mobile'=>$mobile, 'bio'=>$bio, 'birthday'=>$birthday, 'gender'=>$gender, 'updatedBy'=>$userId, 'updatedDtm'=>date('Y-m-d H:i:s')); 
       } 
       else 
       { 
        $userInfo = array('email'=>$email, 'username'=>$username, 'name'=>$name, 
            'mobile'=>$mobile, 'bio'=>$bio, 'birthday'=>$birthday, 'gender'=>$gender, 'updatedBy'=>$userId, 'updatedDtm'=>date('Y-m-d H:i:s')); 
       } 

       $result = $this->settings_model->editUser($userInfo, $userId); 

       if($result == true) 
       { 
        $this->session->set_flashdata('success', 'Profile updated successfully'); 
       } 
       else 
       { 
        $this->session->set_flashdata('error', 'Profile update failed'); 
       } 

       redirect('pages/settings'); 
      } 

    } 

模型

function getUserInfo($userId) 
    { 
     $this->db->select('id, name, email, username, mobile, birthday, gender, bio'); 
     $this->db->from('users'); 
     $this->db->where('isDeleted', 0); 
     $this->db->where('id', $userId); 
     $query = $this->db->get(); 

     return $query->result(); 
    } 


    /** 
    * This function is used to update the user information 
    * @param array $userInfo : This is users updated information 
    * @param number $userId : This is user id 
    */ 
    function editUser($userInfo, $userId) 
    { 
     $this->db->where('id', $userId); 
     $this->db->update('users', $userInfo); 

     return TRUE; 
    } 

VIEW

<?php 

$userId = ''; 
$name = ''; 
$email = ''; 
$mobile = ''; 
$username = ''; 
$birthday = ''; 
$bio = ''; 

if(!empty($userInfo)) 
{ 
    foreach ($userInfo as $uf) 
    { 
     $userId = $uf->id; 
     $name = $uf->name; 
     $email = $uf->email; 
     $mobile = $uf->mobile; 
     $username = $uf->username; 
     $birthday = $uf->birthday; 
     $bio = $uf->bio; 
    } 
} 
?> 

<form class="col s12" role="form" action="<?php echo base_url() ?>settings/editUser" method="post" id="editUseri" role="form"> 
     <div class="row"> 
     <div class="input-field col s12"> 
      <input id="name" type="text" class="validate" name="name" value="<?php echo $name; ?>"> 
      <input type="hidden" value="<?php echo $userId; ?>" name="userId" id="userId" /> 
      <label for="name">Full Name</label> 
     </div> 
     </div> 
     <div class="row"> 
     <div class="input-field col s12"> 
      <input id="username" type="text" class="validate" data-length="15" name="username" value="<?php echo $username; ?>"> 
      <label for="username">Username</label> 
     </div> 
     </div> 
     <div class="row"> 
     <div class="input-field col s12"> 
      <input id="email" type="text" class="validate" name="email" value="<?php echo $email; ?>"> 
      <label for="email">Email</label> 
     </div> 
     </div> 
<div class="box-footer"> 
      <input type="submit" class="btn btn-primary" value="Submit" /> 
      <input type="reset" class="btn btn-default" value="Reset" /> 
</div> 
    </form> 

回答

1

您可以将您的详细信息传入会话并使用会话进行显示。记得更新会话。

value="<?php echo $this->session->userdata('username'); ?>" 

标记为正确的,如果它适合你。

0

尝试添加:

$this->db->last_query()

检查什么是查询去。我认为这将需要设置

$query->result(); 

$this->db->set()数据部分用于处理更新查询

+0

我应该在那里添加? – King

+1

正下方的模态: 功能editUser($ USERINFO,$用户id) { $这 - > DB->其中( '编号',$用户id); $ this-> db-> update('users',$ userInfo); echo $ this-> db-> last_query(); 退出; 返回TRUE; } – Madhur

+0

'$ query-> result_array();'为了什么?他希望只有一行数据库,那么为什么你需要使用'result_array()'? –

0

尝试这种只为调试错误
你没有检查用户会话集或不

if($this->form_validation->run() == FALSE) 
{ 
    $this->editOld($userId); 
}else{ 
    .... 
    .... 
} 

if($this->form_validation->run() == FALSE) 
{ 
    //your validation error 
    echo "validation error"; 

}else if($userId){ 
    //if session set for user 
    $this->editOld($userId); 
}else{ 
    .... 
    .... 
}