문제

I have 2 different tables: reputation and posts. POSTS have details related to it like post_id, user_id, post_content... and so on. REPUTATION have details like post_id and user_id. If a pair exists in the table then the post_id has been +1'ed by the user_id.

On my homepage, I'm using pagination to display 5 posts/page and only fetching from the POSTS table. Further I'm trying to fetch the 'post_id' from REPUTATION table for the 'user_id' in $_SESSION.

public function index()
{
    $this->load->model('themodel');
    $this->load->library('pagination');
    $config['base_url'] = site_url('trial/index');
    $config['total_rows'] = $this->themodel->total_rows('posts');
    $config['per_page'] = 5;
    //$config['display_pages'] = FALSE;
    $this->pagination->initialize($config);

    $offset = $this->uri->segment(3);

    $data['details'] = $this->themodel->list_posts($config['per_page'], $offset);

    $data['links'] = $this->pagination->create_links();


    //Check for session and load the reputation data
    if($this->session->userdata('loggedIn') && $this->session->userdata('user'))
    {
        //fetch reputation by user
        $data['repbyuser'] = $this->themodel->getrepbyuser();
    }

    $this->load->view('home_view', $data);

}

In the model part:

public function list_posts($limit, $start)
{
    $this->db->select('post_id, user_id, post_title, post_content, total_reputation, post_time, total_reviews');
    return $this->db->get('posts', $limit, $start)->result_array();
}

public function getrepbyuser()
    {
        $this->db->select('post_id');
        $this->db->where('user_id', $this->session->userdata('user'));
        $result = $this->db->get('reputation');
        if($result->num_rows() > 0)
            return $result->result_array();
    }

Now on my homepage I'm traversing the $details array but I'm not sure how to match the results from both the table.

If I'm doing anything wrong please guide. Any suggestion would be appreciated.

도움이 되었습니까?

해결책

function getrepbyuser()
{
    $data   = array();
    $this->db->select('post_id');
    $this->db->where('user_id', $this->session->userdata('user'));
    $result = $this->db->get('reputation');
    if($result->num_rows() > 0){
        //return $result->result_array();
        $temp   = $result->result_array();
        foreach( $temp as $each ){ #for returning a single dimentional array
            $data[] = $each['post_id'];
        }
    }
    return $data;       
}

Now in the view page you will do:

foreach( $details as $each ){   #loop for the posts
    $liked  = false;
    if( in_array($key['post_id'], $repbyuser) ){    #check if the post is liked or not
        $liked  = true;
    }

    if( $liked ){
        #button for dislike
    }else{
        #button for like
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top