| << $_POSTについて | 質問一覧 | AND検索 OR検索など・・・ >> |
- キーワードが設定されていません
- 募集中!! 0P
ショッピングカートの構造について
- 募集中!! 0P
phpとmysql(MDB2)でショッピングカートを作っております。
カートに商品を入れる際の動作について構造がわからない
箇所があり有識者の方に是非アドバイスを頂きたく思います。
現状は、商品詳細ページをdetails.php?products_id=1のような
URLにしておりphp側で$_GET['products_id']とし商品idを取得し
取得した値を参照しmysqlから商品データを参照しページに表示させております。
商品をカートに追加する動作は、formのactionをcart.php?products_id=1
のようにし['products'][$_GET['products_id']]のような配列を作成し
cart.php側でセッションで管理しております。
商品idをindexとした配列を組んでいるので違う商品を選んでカートに
入れた際にはidが重複する事がないので問題ないのですが例えば商品を
Tシャツとした場合、同じ型でサイズ違い、色違いがある場合があります。
商品詳細のページでセレクトボックスにてサイズ,色を以下のようにしております。
セレクトボックスの値はmysqlから動的に生成しています。
例えばブルーのTシャツの商品(details.php?products_id=1)ページを見ていると
想定した場合です。
カラーはブルーでSサイズが1枚とMサイズが1枚とした場合カート確認画面には2つの項目を
表示します。
Tシャツ(ブルー,Sサイズ)1枚
Tシャツ(ブルー,Mサイズ)1枚
しかし現状はidをindexとして配列なので重複してしまい後者に選択したものしか
反映されません。
同じ商品を選らんだ場合に1つしか表示されない原因がわかっているので配列のindexを
idではなくtime()など重複しない値で作成すればいいものか迷いどころです。
また、ブルーではなくレッドのカラーが欲しい場合セレクトボックスにてレッドを
選択します。
このままcart.phpに進むとproducts_id=1をmysqlから参照するのでカートに入れた
商品を表示する際にブルーの商品画像が表示されてしまいます。
ごく普通のことなのですが希望としてはvalue1であればブルーの画像、value2であれば
レッドの画像、value3であればホワイトの画像を表示させるようにしたいのですが
どうやって分岐するのが一般的なのでしょうか?
サイズ,カラーの選択は商品につき異なるのでできれば汎用性のある構造にしたいのですが
どうやっていいものかわかりません。^^;
わかりづらい説明となってしまい申し訳ございませんが宜しくお願い致します。
カートに商品を入れる際の動作について構造がわからない
箇所があり有識者の方に是非アドバイスを頂きたく思います。
現状は、商品詳細ページをdetails.php?products_id=1のような
URLにしておりphp側で$_GET['products_id']とし商品idを取得し
取得した値を参照しmysqlから商品データを参照しページに表示させております。
- $res =& $mdb2->query("SELECT * FROM products_list where id='" . mysql_real_escape_string($_GET['products_id']) . "'");
商品をカートに追加する動作は、formのactionをcart.php?products_id=1
のようにし['products'][$_GET['products_id']]のような配列を作成し
cart.php側でセッションで管理しております。
- [products] => Array
- (
- [num] => Array // 数量の配列
- (
- [1(商品id)] => 1
- )
- [class1] => Array // 選択したサイズのvalueの配列
- (
- [1(商品id)] => 1
- )
- [class2] => Array // 選択した色のvalueの配列
- (
- [1(商品id)] => 2
- )
- )
商品idをindexとした配列を組んでいるので違う商品を選んでカートに
入れた際にはidが重複する事がないので問題ないのですが例えば商品を
Tシャツとした場合、同じ型でサイズ違い、色違いがある場合があります。
商品詳細のページでセレクトボックスにてサイズ,色を以下のようにしております。
セレクトボックスの値はmysqlから動的に生成しています。
- <p>サイズ<select name="class1">
- <option label="- 選択してください -" value="0">- 選択してください -</option>
- <option label="S" value="1">S</option>
- <option label="M" value="2">M</option>
- <option label="L" value="3">L</option>
- </select>
- </p>
- <p>カラー<select name="class2">
- <option label="- 選択してください -" value="0">- 選択してください -</option>
- <option label="ブルー" value="1">ブルー</option>
- <option label="レッド" value="2">レッド</option>
- <option label="ホワイト" value="3">ホワイト</option>
- </select>
- </p>
例えばブルーのTシャツの商品(details.php?products_id=1)ページを見ていると
想定した場合です。
カラーはブルーでSサイズが1枚とMサイズが1枚とした場合カート確認画面には2つの項目を
表示します。
Tシャツ(ブルー,Sサイズ)1枚
Tシャツ(ブルー,Mサイズ)1枚
しかし現状はidをindexとして配列なので重複してしまい後者に選択したものしか
反映されません。
同じ商品を選らんだ場合に1つしか表示されない原因がわかっているので配列のindexを
idではなくtime()など重複しない値で作成すればいいものか迷いどころです。
また、ブルーではなくレッドのカラーが欲しい場合セレクトボックスにてレッドを
選択します。
このままcart.phpに進むとproducts_id=1をmysqlから参照するのでカートに入れた
商品を表示する際にブルーの商品画像が表示されてしまいます。
ごく普通のことなのですが希望としてはvalue1であればブルーの画像、value2であれば
レッドの画像、value3であればホワイトの画像を表示させるようにしたいのですが
どうやって分岐するのが一般的なのでしょうか?
サイズ,カラーの選択は商品につき異なるのでできれば汎用性のある構造にしたいのですが
どうやっていいものかわかりません。^^;
わかりづらい説明となってしまい申し訳ございませんが宜しくお願い致します。
| $_POSTについて | 質問一覧 | AND検索 OR検索など・・・ |