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();
}