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条)

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算