2014-02-17 27 views
0

我想編輯我堅持在這裏獲取用戶是我的代碼如何從視圖傳遞一個值在代碼點火器的模型

我在模型的功能選擇所有用戶

public function retrieve() { 
    $this->db->select('*'); 
    $query = $this->db->get('UserDetails');  
    return $query->result(); 
} 

在控制器的查詢的數據被傳遞給查看

public function edit_user() { 
    $data['query']=$this->user_model->retrieve(); 
    $this->layout->view('creation/update_user',$data); 
} 

喜歡這張

<?php foreach($query as $row): ?> 
<a href="edit_user"><?php echo $row->username;?></a> 
<?php echo $row->firstname;?></a> 
<?php endforeach;?> 

我想要一個用戶點擊他應該能夠編輯用戶的用戶名。
我要如何將傳遞給

$username 

在模型中點擊用戶名的值(我知道CI是MVC,怎麼能傳遞給控制器​​接着型號)

public function select_user_details() { 
    $this->db->select('*'); 
    $this->db->where('username' $username); 
    $query=$this->db->get('users'); 
    return $query->result(); 
} 

在控制器用於編輯用戶

public function edit_user() { 
    $data['query']=$this->user_model->select_user_details(); 
    $this->layout->view('creation/update_user',$data); 
} 

在顯示

<? foreach($query as $row) 
<input type="text" name="uname" value="<?php echo $row->username; ?>"/> 
<input type="text" name="name" value="<?php echo $row->names; ?>"/> 
<?php endforeach; ?> 

回答

0

您可以向編輯用戶方法添加一個參數,並在控制器中進行重定向。因此,如果沒有指定id,就會得到所有用戶的列表,但是如果有id,則運行新的模型函數(使用WHERE user_id = $ id而不是$ username查詢)並加載另一個視圖。事情是這樣的:

public function edit_user($id = false) { 
    if (!$id) { 
     $data['query']=$this->user_model->retrieve(); 
     $this->layout->view('creation/update_user',$data); 
    } 
    else { 
     $data['query']=$this->user_model->retrieve_one_user($id); // new model method for a single user 
     $this->layout->view('creation/edit_user',$data);  // new view 
    } 
} 

而且在你看來,你需要讓你的用戶名鏈接去.../edit_user/USER_ID_HERE。

您也可以使用不同的控制器方法:如list_users()edit_user($id)。此外,你可以在一個視圖中完成。這真的取決於你,什麼最適合你的應用。有萬種方法可以做到這一點。


若要改變最少的做到這一點,只需添加一個參數到select_user_details方法(以及在控制器的edit_user法):

public function select_user_details($username) { 
... 
public function edit_user($username) { 
... 

但同樣,確保來自用戶列表的鏈接將轉到.../select_user_details/my_username_here。就像這樣:

<a href="edit_user/<?php echo $row->username;?>"><?php echo $row->username;?></a> 
+0

嗯,我確實如你所說,但在編輯選項,它列出了db''$ data ['query'] = $ this-> user_model-> retrieve_one_中的所有用戶user($ username);''我應該如何修改''retrieve_one_user($ username)''看起來像? 這是我有'公共職能retrieve_one_user($ staff_id){ \t \t $ this-> db-> select('*'); \t \t \t \t $ query = $ this-> db-> get('users'); \t \t return $ query-> result(); \t}' – Angwenyi

+0

好像你只需要在那裏放一個WHERE子句,你就可以走了。類似於'$ this-> db-> where('staff_id',$ staff_id);'而不是'return $ query-> result();''你可以'返回$ query-> row();' – Shomz

+0

其實這是''this-> db-> where('staff_id',$ staff_id)開始以來的問題;'我得到的語法錯誤'語法錯誤,意外'$ staff_id'' – Angwenyi

0

在View -

<?php foreach($query as $row): ?> 
    <a href="<?php echo base_url()?>controllerName/edit_user/<?php echo $row->username;?>"><?php echo $row->username;?></a> 
    <?php echo $row->firstname;?></a> 
    <?php endforeach;?>> 

在控制器 -

function edit_user($userName) 
    { 
    $data['query']=$this->user_model->retrieve($userName); 
    $this->layout->view('creation/update_user',$data); 
    } 

在型號 -

public function retrieve($userName) { 
    $this->db->select('*'); 
    $query = $this->db->get('UserDetails');  
    return $query->result(); 
} 
相關問題