Php 如何在CodeIgniter中将值从视图传递到模型
我想编辑被困在这里的检索到的用户是我的代码 我在模型中有一个选择所有用户的函数Php 如何在CodeIgniter中将值从视图传递到模型,php,codeigniter,Php,Codeigniter,我想编辑被困在这里的检索到的用户是我的代码 我在模型中有一个选择所有用户的函数 public function retrieve() { $this->db->select('*'); $query = $this->db->get('UserDetails'); return $query->result(); } 在控制器中,查询的数据被传递到视图 public function edit_user() { $data
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;?>
模型中(am aware CI是MVC,如何才能传递给控制器然后传递给模型)
在控制器中编辑用户
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; ?>
您可以向“编辑用户”方法添加参数,并在控制器中进行重定向。因此,如果没有指定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
}
}
<a href="edit_user/<?php echo $row->username;?>"><?php echo $row->username;?></a>
在你看来,你需要让你的用户名链接转到这里的…/edit\u user/user\u ID\u
您还可以使用不同的控制器方法:例如列出用户()
和编辑用户($id)
。此外,您可以在单个视图中执行此操作。这真的取决于你和什么将最适合你的应用程序。有无数种方法可以做到这一点
要以最少的更改完成此操作,只需将一个参数添加到select_user_details方法(以及控制器中的edit_user方法): 但同样,请确保用户列表中的链接将转到…/此处选择\u user\u details/my\u username\u。像这样:
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
}
}
<a href="edit_user/<?php echo $row->username;?>"><?php echo $row->username;?></a>
在视图中-
<?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;?>>
模型中-
public function retrieve($userName) {
$this->db->select('*');
$query = $this->db->get('UserDetails');
return $query->result();
}
我按照你的建议做了,但是在编辑选项上,它列出了数据库中的所有用户,$data['query']=$this->user\u model->retrieve\u one\u user($username);'代码>我应该如何修改
检索一个用户($username)
的外观?这就是我所拥有的public function retrieve\u one\u user($staff\u id){$This->db->select('*');$query=$This->db->get('users');return$query->result();}
看起来你只需要在那里放一个WHERE子句,就可以了。类似于$this->db->where('staff\u id',$staff\u id)代码>而不是返回$query->result()
您可以使用返回$query->row()
实际上,这是自$this->db->where('staff\u id',$staff\u id)中开始以来出现的问题
我得到了语法错误语法错误,意外的“$staff\u id”
这不应该是一个问题-你能在那之前把$staff\u id变为var\u dump吗?谢谢在我的代码中我弄乱了这个语句$this->db->where('staff\u id',$staff\u id)
我忘记了前面的逗号$staff\u id
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();
}