dongyi1748 2016-02-01 17:04
浏览 29
已采纳

Codeigniter:更新后将页面重定向到用户配置文件

I want to show an updated profile page of users on my site. The update on database is actually working but i want my userprofile page to show the updated datas once it clicked the submit button. What will I add here D:

MemberLoginController.php (controller)

 <?php defined('BASEPATH') OR exit('No direct script access allowed');

   class MemberLoginController extends CI_Controller {
    public function __construct()
    {
        parent::__construct();

      $this->load->model('MemberLoginModel');

}

public function home(){
    $this->load->view('pages/index');
}
public function userprofile(){
    $this->load->view('member/userprofile');
}
 public function useredit(){
    $this->load->view('member/useredit');
}

public function memberlogin(){
     $this->form_validation->set_error_delimiters('<p class=error>','</p>');
     $this->load->library('form_validation');
     $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|callback_validate_credentials');
     $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');


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

           // Perform Actions after getting valid form inputs
                $data = array(
                'email' => $this->input->post('email'),
                'is_logged_in' => 1
            );
        $this->session->set_userdata($data);

            redirect('index.php/MemberLoginController/members');
        }else
            $this->load->view('pages/index');                
}    

public function members(){
        if($this->session->userdata('is_logged_in')){
             $vis = "hidden";
             $id = $this->session->userdata('id');
             $this->load->model('MemberLoginModel');
             $memberinfo['memberinfo']=$this->MemberLoginModel->getMember($id);
             $this->load->view('member/userprofile',$memberinfo);

        }else{
            redirect('index.php/HomeController/home');
        }            
}

public function edit($id){
    $data = array(
    "action" => base_url('/index.php/MemberLoginController/update/'.$id), 
    "data" => $this->db->get_where('member',array('id'=>$id))   
    );    

    $this->load->view('member/useredit', $data);
}

public function update($id){

    $data = array(
            'memberfname'=>  $this->input->post('memberfname'),
            'memberlname'=>  $this->input->post('memberlname'), 
            'email'=>$this->input->post('email'),
            );
            $this->db->update('member',$data,array('id'=> $id));
            redirect('index.php/MemberLoginController/getMember/'.$id);

}

public function getMember(){
    $this->load->model('MemberLoginModel');
    $memberinfo['memberinfo']=$this->MemberLoginModel->getMember();
    $this->load->view('member/userprofile',$memberinfo);
}

public function validate_credentials(){          
    $this->load->model('MemberLoginModel');          
        if($this->MemberLoginModel->login()){
            echo ("<SCRIPT LANGUAGE = 'JavaScript'>
                window.alert('Login Successfully')
                window.location.href='userprofile'
                </SCRIPT>");
            exit();
            return true;
        }else{
            echo ("<SCRIPT LANGUAGE = 'JavaScript'>
                window.alert('Invalid username or password. Please click LOGIN again.')
                window.location.href='home'
                </SCRIPT>");
            exit();
            //$this->form_validation-     >set_message('validate_credentials','Incorrect Email/Password');
            return false;
         }
  }

 }
 ?>

MemberLoginModel.php

<?php class MemberLoginModel extends CI_Model{

public function __construct()
{
    parent::__construct();
}
function login()
{
    $this->db->where('email',$this->input->post('email'));
    $this->db->where('password', md5($this->input->post('password')));


$query = $this->db->get('member');  /*i added 'member' table on db new members*/

       if($query->num_rows()>0)
    {
        foreach($query->result() as $rows)
        {
            //add all data to session
            $newdata = array(
                    'id'            => $rows->id,
                    'memberfname'   => $rows->memberfname,
                    'memberlname'   => $rows->memberlname,
                    'email'         => $rows->email,

                    'logged_in'     => TRUE
               );
        }
            $this->session->set_userdata($newdata);
            return true;            
        }else{
            return false;
        }
 }
public function add_user()
{
    $data = array(
        'memberfname'=>$this->input->post('memberfname'),
        'memberlname'=>$this->input->post('memberlname'),
        'email'=>$this->input->post('email'),
        'password'=>md5($this->input->post('password')),

        );
    $this->db->insert('member',$data);
}

public function getMember()
{
    $query=$this->db->get('member');
    return $query->result();
}    


}
?>

Userprofile.php (view)

    <body>
        <div class="row rowpadding">
            <div class="col-md-3 col-sm-3">                                   
                <div class="user-wrapper">          
                <div class="description">
                <a href="#"><img height="200px" width="200px" src="<?php echo base_url();?>upload/no-avatar.jpg"></a>
                </div>
                <br><br>
                 </div>
            </div>

            <div class="col-md-6 col-sm-6  user-wrapper">
                <div class="description">
                <br>
                <h2 class="name">Hi,    <?php echo $this->session->userdata('memberfname'); ?>!</h2>                    
                <hr/>
            <div class="colwrapper">                    
                <div class="cont-5">
                    <div class="cont-6 name"><p class="para-2"><span class="font-3">First Name:  <?php echo $this->session->userdata('memberfname'); ?>
                    </span></p></div>
                </div><br>
                <div class="cont-7">
                    <div class="cont-8 name"><p class="para-3"><span class="font-4">Last Name: <?php echo $this->session->userdata('memberlname'); ?></span></p></div>
                </div><br>
                <div class="cont-9">
                    <div class="cont-10"><p class="para-4"><span class="font-5">Email Address: <?php echo $this->session->userdata('email'); ?></span></p></div>
                </div><br>
                <div class="cont-11">
                    <div class="cont-12"><p class="para-5"><span class="font-6"></span></p></div>
                </div><br>                  
            </div>
                <br><br>
                </div>                
            </div>                          
         <div class="col-md-3 col-sm-3  user-wrapper">
                <div class="user-wrapper">
                    <br>
                <div class="description">
                  <ul class="rightnavi"style="">
                  <li class="rightnavi"><a href="<?php echo base_url(); ?>index.php/upload/upload">Add Profile Photo</a></li>
                  <li class="rightnavi"><a href = "<?php echo base_url() ?>/index.php/MemberLoginController/edit/<?php echo $this->session->userdata('id'); ?>">Update Your Profile</a></li>
                  </ul>
                  <hr/>
                </div>
                </div>
        </div>
       <!-- USER PROFILE ROW END-->
</div>  
</body>

Useredit.php (View)

<form  action="<?php echo $action;?>" method="POST" enctype="multipart/form-data">
<div class="container">
    <div class="row rowpadding">
            <div class="col-md-3 col-sm-3">

                <div class="user-wrapper">

                <div class="description">
                <a href="#"><img height="200px" width="200px" src="<?php echo base_url();?>upload/no-avatar.jpg"></a>
                </div>

                <br><br>
                 </div>
            </div>

            <div class="col-md-6 col-sm-6  user-wrapper">
                <div class="description">
                <br>

                <h2 class="name">Hi,    <?php echo $this->session->userdata('memberfname'); ?>!</h2>                    
                <hr />
                 <p>
                <div class="colwrapper">

                <div class="cont-5">
                    <div class="cont-6 name"><p class="para-2"><span class="font-3">First Name:  
                    <input type="text" name="memberfname" value="<?php echo $this->session->userdata('memberfname'); ?>" required />
                    </span></p></div>
                </div><br>
                <div class="cont-7">
                    <div class="cont-8 name"><p class="para-3"><span class="font-4">Last Name:
                    <input type="text" name="memberlname" value="<?php echo $this->session->userdata('memberlname'); ?>" required /></span></p></div>
                </div><br>
                <div class="cont-9">
                    <div class="cont-10"><p class="para-4"><span class="font-5">Email Address:
                    <input type="text" name="email" value="<?php echo $this->session->userdata('email'); ?>" required /></span></p></div>
                </div><br>
                <div class="cont-11">
                <div>
                        <input type="hidden" name="hidden" value="<?php echo $this->session->userdata('id'); ?>"/>
                        <input type="submit" value="update">
                </div>
                </div>
                <br><br>
                   </p>
                </div>                
                </div>      
            </div>
    </div>
</div>
</form>
  • 写回答

2条回答 默认 最新

  • dongxiong5546 2016-02-01 21:43
    关注

    You should combine form_validation object with your code.

    public function update($id)
    {
        if ( (int)$id < 1)//$id is not an integer
        {
            redirect('memberlogincontroller/home', 'refresh');
        }
        else
        {
            $this->load->library('form_validation');//it's good to autoload it
    
            $this->form_validation->set_rules('memberfname', 'First Name', 'trim|required');
            $this->form_validation->set_rules('memberlname', 'Last Name', 'trim|required');
            $this->form_validation->set_rules('email', 'Email', 'trim|required');
    
            if ($this->validation_form->run() === FALSE)
            {
                $this->load->view('userprofile');
            }
            else
            {
                $data = array(
                    'memberfname' => $this->input->post('memberfname'),
                    'memberlname' => $this->input->post('memberlname'),
                    'email' => $this->input->post('email'),
                );
    
                $this->db->update('member',$data,array('id'=> $id));
                redirect('memberlogincontroller/getMember/' . $id, 'refresh');
            }
    
        }
    }
    

    In model you are not passing id of specific member. It should be like this

    public function getMember($id)
    {
        $this->db->where('id', $id);
        $query = $this->db->get('member');
    
        if ($query->num_rows() !== 1)
        {
            return FALSE;
        }
        return $query->row();//since you need just single member data
    }
    

    Also, in controller method code you have to pass $id to model:

    public function getMember($id)
    {
        if (int($id) < 1)
        {
            redirect('memberlogincontroller/home', 'refresh');//no valid uri segment
        }
        else
        {
            $this->load->model('MemberLoginModel');
            $memberinfo['memberinfo'] = $this->MemberLoginModel->getMember($id);
    
            if ( ! $memberinfo['memberinfo'])//returned FALSE from model
            {
                redirect('memberlogincontroller/home', 'refresh');//no $id in DB
            }
            else
            {
                $this->load->view('member/userprofile',$memberinfo);
            }
        }
    }
    

    Also, you should pay attention to naming convention. You shouldn't close file with closing php tag. My proposal is to read docs carefully since you could avoid lot of annoying bugs that way.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料