Reputation: 103
I'm making a website on the CodeIgniter framework so users can add products to the website. Now my question is: How do I use the user_id in the products table to get the user's details from the database and display them next to the product? So for example when I click on a product I want to have a link to the profile of the user who uploaded the product but I'm not sure how I can do that.
Database tables information:
table users:
user_id (primary_key)
email
voornaam
achternaam
beschrijving
table products:
product_id (primary_key)
product_naam
product_beschrijving
user_id
category_id
My function in model file:
public function get_product_details($product_id) {
$this->db->select('products.*, users.*');
$this->db->from('products');
$this->db->join('users', 'users.user_id = products.user_id', 'left');
$this->db->where('product_id', $product_id);
$query = $this->db->get();
$result = $query->row_array();
if (!empty($result)) {
return $result;
} else {
return array();
}
}
Upvotes: 1
Views: 306
Reputation: 182
Use join query based on user_id fetch details from 2 tables in database.
Like this:
Model:
public function get_product_details($product_id)
{
$this->db->select('users.user_id,users.email,users.voornam,products.product_id,products.category_id,products.product_naam');
$this->db->from('users');
$this->db->join('products','products.user_id = users.user_id');
$this->db->where('product_id', $product_id);
$query = $this->db->get();
if($query->num_rows()>0)
{
return $query->result_array();
}
}
Controller:
public function edit($product_id)
{
$data['products_list'] = $this->your_model->get_product_details($product_id);
$this->load->view('your_view_filename',$data);
}
// data from $data['products_list'] in controller.
View:
<?php print_r($products_list); //for refference
foreach($products_list as $row)
{
?>
<tr>
<td><?php echo $row['email'];?></td>
<td><?php echo $row['voornam'];?></td>
<td><?php echo $row['product_naam'];?></td>
etc...
</tr>
<?php } ?>
Upvotes: 4