Professional CodeIgniter, Thomas Myer
Chapter 4: Creating the Main Web Site
99
Updating the MProducts Model
Before you work with the controller, you ' ll need to create a new function in the MProducts model, one
that will allow you to extract a variable number of products that match a grouping. Here is that new
function, called
getProductsByGroup()
. It accepts three arguments: The first limits the result set, the
second passes in a grouping string to match against, and the third tells the function which product ID to
skip (in this case, the product you ' re skipping is the one that has been displayed on the page).
skip (in this case, the product you ' re skipping is the one that has been displayed on the page).
function getProductsByGroup($limit,$group,$skip){
$data = array();
if ($limit == 0){
$limit=3;
}
$this-
>
db-
>
select(`id,name,shortdesc,thumbnail');
$this-
>
db-
>
where(`grouping', $group);
$this-
>
db-
>
where(`status', `active');
$this-
>
db-
>
where(`id !=', $skip);
$this-
>
db-
>
orderby(`name','asc');
$this-
>
db-
>
limit($limit);
$Q = $this-
>
db-
>
get(`products');
if ($Q-
>
num_rows()
>
0){
foreach ($Q-
>
result_array() as $row){
$data[] = $row;
}
}
$Q-
>
free_result();
return $data;
}
Building the product() Controller Function
Now it ' s time to build the controller. By now the pattern should be pretty established in your mind. Your
controller function for
product()
looks like this:
function product($id){
$product = $this-
>
MProducts-
>
getProduct($id);
if (!count($product)){
redirect(`welcome/index','refresh');
}
$data[`grouplist'] = $this-
>
MProducts-
>
getProductsByGroup(3,$product[`grouping'],$id);
$data[`product'] = $product;
$data[`title'] = "Claudia's Kids | ". $product[`name'];
$data[`main'] = `product';
$data[`navlist'] = $this-
>
MCats-
>
getCategoriesNav();
$this-
>
load-
>
vars($data);
$this-
>
load-
>
view(`template');
}
c04.indd 99
c04.indd 99
6/10/08 5:34:28 PM
6/10/08 5:34:28 PM