0

控制器:

public function searchevent() {
    $this->load->model("users_model");  
    $data["rows"] = $this->users_model->search_member_events();
    $this->load->view("search_view", $data);        
}

模型:

public function search_member_events() {
    $this->db->select('*');
    $this->db->from('users');
    $this->db->where('id', '$userid');
    $this->db->join('events', 'users.id = events.user_id');
    $q = $this->db->get();      
    if ( $q->num_rows() > 0 ) {
        foreach ( $q->result() as $row ) {
            $data[] = $row;
        }
        return $data;
    }

}

看法:

<div class="member_search_results">
   <h2>Your Events </h2>
   <?php if(isset($rows)) : foreach($rows as $r): ?>
      <div class="outer">
        <div class='single_result'>
           <strong class='title'><?php echo $r->title ?></strong>
           <div class="outer">
               <span class='start'><strong>Starts at:</strong> <?php echo $r->start ?></span>
               <span class='end'><strong>Ends at:</strong> <?php echo $r->end ?></span>
               <span class='time'><strong>Time:</strong><?php echo $r->time ?></span>               
           </div>
           <div class="outer">
               <span class='location'><strong>Location:</strong><?php echo $r->location ?></span>
           </div>
           <div class="outer">
               <span class='description'><strong>Details:</strong><?php echo $r->description ?></span>
           </div>
        </div>
        <?php endforeach; ?>
    <?php else : ?>
    <h2>You do no have any events yet, please <?php echo anchor ("createevent", "Create Event") ?></h2>
    <?php endif; ?>
</div>

我有两个数据库表用户和事件。我想要的是当用户登录时..来自 EVENT 表的登录用户的所有事件都应该显示在用户仪表板上。现在它正在显示所有事件。

4

3 回答 3

1

更改模型功能,例如:

public function search_member_events($user_id){     

    $this->db->select('*');
    $this->db->from('users');
    $this->db->join('events', 'users.id = events.user_id');
    $this->db->where('users.id',$userid);    
    $q = $this->db->get();      
    if($q->num_rows() > 0){
        foreach($q->result() as $row){
            $data[] =   $row;
        }
        return $data;
    }

}

控制器:

public function searchevent(){
    //get from session if you've set userid on login, like
    $user_id = $this->session->userdata("user_id");
    $this->load->model("users_model");  
    $data["rows"] = $this->users_model->search_member_events($user_id);
    $this->load->view("search_view", $data);        
}

可能是你有一些模型函数在用户名和密码检查后登录,在同一个函数中,你可以在会话中设置登录用户的用户 ID,方法是:

//get the user id of loggedin user after 
//login check and set in session
$this->session->set_userdata("user_id", $user_id);
于 2013-09-24T05:44:02.220 回答
1

只需通过以下方式从模型中提取特定用户的事件:

public function search_member_events($userid){     

$this->db->select('*');
$this->db->from('users');
$this->db->join('events', 'users.id = events.user_id');
$this->db->where('id',$userid);
$q = $this->db->get();      
if($q->num_rows() > 0){
    foreach($q->result() as $row){
        $data[] =   $row;
    }
    return $data;
}

}

在控制器操作中,您可以从会话中获取用户 ID 并相应地获取数据:

$this->load->model("users_model");  
$userid = $this->session->userdata('userid');// Assumed that you've already set userid in session
$data["rows"] = $this->users_model->search_member_events($userid);
$this->load->view("search_view", $data); 

要设置会话,您必须首先加载“会话”库,然后使用键和值设置会话。

$this->load->library('session');
$this->session->set_userdata('key', 'value'); 
于 2013-09-24T05:51:22.657 回答
1

尝试这样的事情。当用户尝试登录您的站点时,您需要在模型中执行以下操作。

$sess_arr=array();
$pass   = $this->input->post('password',true); //change password field with yours
$email  = $this->input->post('emailLogin',true); //change emailLogin field with yours

$rs=$this->db->select('id')->where('email',$email)->where('password',$pass)->get('users');
if($rs->num_rows()>0)
{
    $data=$rs->row_array();
    $sess_arr['id'] =$data['id'];
    $this->session->set_userdata('user_login',$sess_arr); //it will set the logged in user id to user_login variable
}

现在在您的 search_member_events 函数中使用会话,例如

$user_id=$this->session->userdata['user_login']['id'];

用您的更改所有输入变量。如果您遇到任何问题,请告诉我。

于 2013-09-24T07:10:24.763 回答