Professional CodeIgniter

(singke) #1

Chapter 4: Creating the Main Web Site


102


$this- > db- > where(‘status’,’active’);
$this- > db- > limit(50);
$Q = $this- > db- > get(‘products’);
if ($Q- > num_rows() > 0){
foreach ($Q- > result_array() as $row){
$data[] = $row;
}
}
$Q- > free_result();
return $data;
}

Notice the use of $this - > db - > like() and $this - > db - > orlike()? These methods create wildcard
matching on certain fields. The above code creates the following SQL statement:

select id, name, shortdesc, thumnail from products
where (name like ‘%$term%’
or shordesc like ‘%$term%’
or longdesc like ‘%$term%’)
and status=’active’
order by name asc
limit 50

Now that the search function is built, you can create the controller function called search(). Remember
that this URL is loaded only when someone fills in a search term and clicks Search, so you ’ ll need to
check for form input.

In CodeIgniter, the way to check for form input is to use the $this - > input - > post() method. If there
isn ’ t a value for “ term ” in the form post, redirect the user to the home page. There are other security
considerations to make, but most of those are covered in Chapter 9.

function search(){
if ($this- > input- > post(‘term’)){
$search[‘results’] = $this- > MProducts- > search($this- > input- > post(‘term’));
}else{
redirect(‘welcome/index’,’refresh’);
}
$data[‘main’] = ‘search’;
$data[‘title’] = “Claudia’s Kids | Search Results”;
$data[‘navlist’] = $this- > MCats- > getCategoriesNav();
$this- > load- > vars($data);
$this- > load- > view(‘template’,$data);
}

Once again, you ’ re going to use $data[ ’ main ’ ] to pass along the name of the view you want loaded in
the main area of the page. This time, you ’ re also passing in an array called $search[ ’ results ’ ] and
looping over the array called $results in the view.

The search view looks like the following code listing. Notice that you ’ re only using the pleft div,
instead of both pleft and pright. The reason you ’ re not going to use pright is that you don ’ t need
it — search pages don ’ t have a right column that displays related products.
Free download pdf