2

カスタム卒業装備を販売するクライアント向けのカスタム e コマース システムを作成しています。次の製品レイアウトのスクリーン ショットがあります...

エコムイメージ

ページの右側に最大価格、色、素材を含むフォームがあります。[更新オプション] をクリックすると、jquery の ajax 関数を介してすべてのデータが codeigniter コントローラーに送信されます。ここで、選択したオプションと選択した価格範囲内の製品の新しいリストを取得する必要があります。次に、products 配列を codeigniter ビューに渡し、そのビューを ajax 成功変数と共にカートに戻します。

したがって、色だけ、または素材だけでこれを機能させることができますが、私の問題は、必要なすべての素材とオプションを備えた一連の製品を引き出す方法を理解することです. 私はそれを行うための最良の方法に頭を悩ませることができないと思います。正しい色のリスト、正しい材料のリスト、正しい価格のリスト、マージされた配列の重複を削除することを考えましたが、それが最善の方法だとは思えません。 .

この特定のクライアントは、オプションとして「色」と「素材」のみを必要とするため、製品テーブルはすべて製品テーブルに色の ID と材料の ID を持つように設定されています。次に、IDと色、またはIDと素材を含む色と素材のテーブルがあります。

これを行うための最良の方法についてどう思いますか? codeigniters アクティブ レコードを使用して mysql を実行したいと思います。

///// 編集 /////////////////////////////////////

これが私の製品テーブルの画像です。 製品表

また、コードイグナイター コントローラーへのデータの送信を制御する jquery は次のとおりです。

//Filter Options Ajax

$('#updateOptions').click(関数(イベント) {

//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);
}

次に、URLprices.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 に答える