2012-07-06 54 views
2

我在CodeIgniter中为电子商务网站创建一个CMS,用户可以在其中搜索产品标题,说明或SKU并显示前20个结果。然后有一个“更多...”按钮,可以加载下20个产品。但是,我不能获得“更多...”的查询以输出相同数量的结果。下面是我从我的模型2个功能:'加载更多'sql功能不加载正确的产品

public function searchProducts($searchText) 
{ 

    $this->db->select("prod_id, prod_sku, prod_title, prod_desc, prod_main_image"); 
    $this->db->where("prod_sku LIKE '%{$searchText}%'"); 
    $this->db->or_where("prod_title LIKE '%{$searchText}%'"); 
    $this->db->or_where("prod_desc LIKE '%{$searchText}%'"); 
    $this->db->order_by("prod_id", "desc"); 
    $query = $this->db->get("products", 20); 

    return $this->checkSalesProducts($query->result()); 

} 

public function loadMoreSearchProducts($searchText, $id) 
{ 

    $this->db->select("prod_id, prod_sku, prod_title, prod_desc, prod_main_image"); 
    $this->db->where("(prod_sku LIKE '%{$searchText}%' OR prod_title LIKE '%{$searchText}%' OR prod_desc LIKE '%{$searchText}%') AND `prod_id` < {$id}"); 
    $this->db->order_by("prod_id", "desc"); 
    $query = $this->db->get("products", 20); 

    return $this->checkSalesProducts($query->result()); 

} 

在负载更多的功能,Ajax调用发送的最后一个产品的ID显示,这样我可以使用的产品ID降序排序,以获得产品具有更低下一个20的ID。

任何想法?

回答

2

你会想办法“分页“就像这样。首先只有一个功能。

public function searchProducts($searchText, $page = 0) 
{ 
    $this->db->select("prod_id, prod_sku, prod_title, prod_desc, prod_main_image") 
     ->where("prod_sku LIKE '%{$searchText}%'") 
     ->or_where("prod_title LIKE '%{$searchText}%'") 
     ->or_where("prod_desc LIKE '%{$searchText}%'") 
     ->order_by("prod_id", "desc") 
     ->limit(20, $page*20); 

    $query = $this->db->get("products"); 

    return $this->checkSalesProducts($query->result()); 
} 

这样,您将在每个不同的页面上加载下20个结果。有$page = 0将默认为前20个结果,使您的功能通用和模块化。

0

如果我正确理解你的问题,你需要设置loadMoreSearchProducts()偏移

$query = $this->db->get("products", 20, 20); 

编辑:

试试这个:

$this->db->where("(prod_sku LIKE '%{$searchText}%' OR prod_title LIKE '%{$searchText}%' OR prod_desc LIKE '%{$searchText}%') AND `prod_id` > {$id}"); 
$this->db->order_by("prod_id", "asc"); 
+0

我认为有ID从最高到最低,并把“少于最后ID”部分在where子句应该这样做? – 2012-07-06 12:20:06