2

我正在为销售定制毕业生装备的客户创建一个定制电子商务系统。我的产品布局有以下屏幕截图...

经济形象

我在页面右侧有一个表格,上面有最高价格、颜色和材料。当您单击更新选项时,它会通过 jquery 的 ajax 函数将所有数据发送到我的 codeigniter 控制器,我需要在其中提取一个新的产品列表,其中包含他们选择的选项以及他们选择的价格范围内的产品。然后,我将 products 数组传递给 codeigniter 视图,并将视图返回到带有 ajax 成功变量的购物车。

因此,我可以仅使用颜色或仅使用材料来完成此工作,但我的问题是弄清楚如何提取具有我需要的所有材料和选项的一组产品。我想我只是想不出最好的方法。我考虑过使用正确颜色的列表,然后是正确材料的列表,然后是正确定价的列表,然后删除合并数组中的重复项,但这并不是最好的方法.

这个特定的客户只需要“颜色”和“材料”作为选项,因此我的产品表设置为在产品表中包含颜色的 ID 和材料的 ID。然后我有一个颜色和材料表,其中包含 id 和颜色或 id 和材料。

你们对最好的方法有什么想法?我想使用 codeigniters 活动记录来做 mysql 的东西。

///// 编辑 /////////////////////////////////

这是我的产品表的图像: 产品表

此外,这是我的 jquery 控制向 codeigniter 控制器提交数据的方式:

//Filter Options Ajax

$('#updateOptions').click(function(event) {

//Prevent the default href action
event.preventDefault();

var filterOptions = $('#filterForm').serialize();

//Get the site url
var siteUrl = $('#siteUrl').val();

//Roll up the product listing div and show a loader
$('div.products').slideUp( 500, 'easeInExpo' );
$('div.loader').delay(500).fadeIn();

//Get a new list of products and repopulate the information
$.ajax({
     type: "POST",
     url: siteUrl + "category/filterProducts",
     data: { filterOptions: filterOptions },
     success: function(data) {
        $('div.loader').fadeOut(500);
        $('div.products').html(data).delay(500).slideDown( 500, 'easeOutExpo' );
     } 
});

});

4

1 回答 1

1

像这样的东西:

if ($min_price = $this->input->get_post('min_price')) {
    $this->db->where('price <', $min_price);
}

然后该网址prices.php?min_price=100将添加WHERE price < 100到您的查询中。

对于颜色(我使用|的是分隔符,但使用适合您的颜色):

if ($colors = $this->input->get_post('colors')) {
    $colors = explode($colors, '|');
    $this->db->where_in('color', $colors);
}

然后 urlprices.php?min_price=100&colors=red|blue将添加

WHERE price < 100 AND color IN ('red', 'blue')

如果您使用数组(复选框)发布颜色,请尝试以下操作:

if ($colors = $this->input->post('colors')) {
    $this->db->where_in('color', $colors);
} elseif ($colors = $this->input->get('colors')) {
    $colors = explode($colors, '|');
    $this->db->where_in('color', $colors);
}

这使您可以使用 url 或 POST 添加颜色,具体取决于您的操作方式。

于 2012-10-19T01:12:22.427 回答