2017-07-26 116 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{ 
    .... 
    .... 
}