在Codeigniter中丢失了URI段

时间:2016-05-12 06:09:50

标签: php codeigniter

在我的codeigniter应用程序中,我有一个用户列表,管理员可以在其中更改用户的角色并更新用户信息。编辑用户时,url为user / edit_user / 1002,并加载edit_user视图。 1002是用户的用户ID。

当我提交表单并且form_validation失败时,我重新加载视图,但问题是网址上的最后一段,用户ID丢失了。因此,表单中使用的SQL查询失败。有没有办法我可以用错误重新加载视图,并将用户ID保留在uri段?以下是代码:

if ($this->form_validation->run() == FALSE) {

        $userid = $this->uri->segment(3);   
        $this->db->where('userid', $userid);
        $query = $this->db->get('user');
        $row1 = $query->row();      
        $data = (array)$row1;                                                   

        $sql = "SELECT userid, role_id FROM user_role WHERE userid = $userid ";// This sql fails
        $ro = $this->db->query($sql);

        $data['role_check'] = $ro->result(); 
        $this->load->view('edit_user',$data);   
}   

提前致谢。

在view_user.php中,

    <tr>
        <td><?php echo $loop->userid;?></td>
        <td><?php echo $loop->name;?></td>                      
        <td><a class="btn-small btn-info" href="<?php echo site_url(); ?>/user/edit_user/<?php echo $loop->userid;?>">Edit</td>

    </tr>
   

在控制器用户中,我使用了我先发布的代码。

2 个答案:

答案 0 :(得分:1)

在表单的操作中添加用户ID。

这样的事情:

action="user/edit_user/<?php echo $this->uri->segment(3); ?>"

答案 1 :(得分:0)

我自己解决了这个问题并分享了以防其他人遇到这个问题。通过CI文档,我发现如果段不存在,函数返回FALSE。我用它来涵盖更新可能面临的所有条件。代码如下:

  if($this->uri->segment(3))
        {   $userid = $this->uri->segment(3);   
            $this->session->set_userdata('update_user_id',$userid);
        }               
        else            
            $userid= $this->session->userdata('update_user_id');    

如果表单重新验证,$ this-&gt; uri-&gt; segment(3)将返回FALSE,else条件将从会话中选择用户ID,该会话是在首次填充表单时通过单击EDIT链接设置的

谢谢大家。