2012-11-20 43 views
1

我有一个产品表。我需要显示所有的产品。我在不同的条件下获取结果。在带分页的Codeigniter中显示查询结果

create table `products` (
    `id` double , 
    `category_id` double , 
    `subcategory_id` double , 
    `product_name` varchar (765), 
    `product_description` varchar (765), 
    `product_viewed` varchar (765), 
    `sale_wanted` tinyint (2), 
    `added_date` datetime , 
    `updated_date` datetime , 
); 

我需要diplay这样

1. The latest products (use of added date) 
2. Most Wanted (Sorting by sale_wanted 1 for sale , 2 for wanted) 
3. Most Viewed (Sorting by product_viewed) 
4. Sorting by Specific Subcategory 

所有结果应分页显示结果。如果我第一次得到结果,这是没问题的。但是,如果我使用分页链接,所有条件数据都将丢失,并且查询无任何条件地获取结果。我如何管理这种情况。请我不需要代码我需要提示和建议。另一件事是我使用Codeigniter的分页类。

EDITED

这里是我的模型方法,我用

public function getProductsList($per_page=5,$page=0) 
{ 
    $info = $this->input->post(); 

    if(isset($info['type'])) 
    { 
     $type = $info['type']; 

     if($type == 'most_wanted'){ 
      $where  = " AND sale_wanted = 1"; 
      $order_by = " ORDER BY ldc.added_date desc"; 
     }else if($type == 'most_viewed'){ 
      $where  = " "; 
      $order_by = " ORDER BY ldc.product_viewed desc";    
     }else{ 
      $where  = " "; 
      $order_by = " ORDER BY ldc.added_date desc";     
     } 
    }else if(isset($info['sale_wanted']) AND isset($info['subcategory_id'])){ 
     $sale_wanted  = $info['sale_wanted']; 
     $subcategory_id = $info['subcategory_id']; 
     $where  = " AND sale_wanted = $sale_wanted AND ldc.subcategory_id = $subcategory_id"; 
     $order_by = " ORDER BY ldc.added_date desc"; 
    }else if(isset($info['keyword'])){ 
      $keyword = $info['keyword']; 
      $search_type = $info['search_type']; 
      $where  = " AND ldc.$search_type like '$keyword%'"; 
      $order_by = " ";   
    }else{ 
      $where  = " "; 
      $order_by = " ";    
    }   

    $num = 0; 

    if($page != 0){ 
     $num = ($page * $per_page) - $per_page; 
    } 


    $sql_query = " 
       SELECT 
        ldc.id, 
        ldc.product_name, 
        ldc.product_viewed, 
        DATE_FORMAT(ldc.added_date, '%m/%d/%Y') as added_date, 
        ifnull(dc.name,'Unknown') as category, 
        dpi.product_image   
       FROM default_products AS ldc 
       LEFT JOIN default_manufacturers as dm ON dm.id = ldc.manufacturer 
       LEFT JOIN default_category as dc ON dc.category_id = ldc.category_id 
       LEFT JOIN ((select product_id , product_image from default_product_images group by product_id) as dpi) 
        ON dpi.product_id = ldc.id 
       WHERE approved = 1 
       $where 
       $order_by 
       LIMIT $num,$per_page 
     "; 

    $query = $this->db->query($sql_query); 
    return $query->result(); 
} 
+0

你要显示所有4个种不同的表....... ... –

+0

不,我只有一个视图(表格),我不想重复我的代码 –

+0

在单个表格中,当用户选择他们的结果将根据条件而改变的条件时,您将以正常方式显示所有产品。我是对的...... –

回答

1

我会强烈建议对笨分页这两个免费教程 -
视频教程,工作示例代码(可能需要更新代码到CI 2.1),甚至在评论中提供了一些有用的信息。从头

笨:显示&排序表格数据 http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/

笨从头开始:搜索结果没有查询字符串 http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-search-results-without-query-strings-2/