2014-02-17 30 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(); 
} 
相关问题