- ベストアンサー
ショッピングカートのセッション処理について。
いつも拝見し大変お世話になっております。 現在ショッピングカートを作成しておりますが、商品購入画面から”購入する”のボタンを押したときに、購入する商品ID,注文数量、サイズ、商品価格をセッションとして 格納したいのですがうまくいかず困っております。 使用PHPバージョンは4.4です ソースは以下のとおりです。 //購入するのボタンを押したときの処理 if (isSet($_POST['cart']){ $_SESSION['cart'][$_POST(商品コード)] =+$_POST(商品価格); //↑セッション格納ここまで //(テスト)格納したデータを表示 print_r($_SESSION['cart']); } いろいろと調べて該当する商品コードと値段は 格納することができたのですが、その他の商品購入数などをデータにさらに格納する時どうすればいいかわかりませんでした。 お忙しい中大変申し訳ございませんがお知恵をお貸しいただけますでしょうか?よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
if (!isset($_SESSION['cart'][$_POST['商品コード']])) { $_SESSION['cart'][$_POST['商品コード']] = array('price'=>$_POST['商品価格'], 'number'=>1); } else { $_SESSION['cart'][$_POST['商品コード']]['price'] += $_POST['商品価格']; $_SESSION['cart'][$_POST['商品コード']]['number']++; } とか 個数だけセッションに入れて価格はデータベースから取得して乗算する方法もありますが。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
セッションを利用せずformのhiddenで渡すのが賢明かと。
お礼
ご回答ありがとうございます。 今回のスクリプトに関してはhiddenで渡すよりも セッションで渡したほうがベターではないかと考えました。 hiddenで渡す手もあるのですね、データの渡し方にはいろいろなやり方がありますので、アドバイスいただいて本当に勉強になります。
補足
無事にデータを格納することができましたので 質問を閉じさせていただきたいと思います。 papillon68様、php504様、yambejp様本当に ありがとうございました。
- papillon68
- ベストアンサー率61% (42/68)
> if (isSet($_POST['cart']){ if (isset($_POST['cart']){ > $_SESSION['cart'][$_POST(商品コード)] =+$_POST(商品価格); $_SESSION['cart'][$_POST(商品コード)] += $_POST(商品価格); としてみてはいかがでしょうか。
お礼
早速のご回答ありがとうございます。 $_SESSION['cart'][$_POST(商品コード)] += $_POST(商品価格); とスクリプトでは記載しておりました。ご指摘ありがとうございました。書き込みする際に私が記載を間違っておりました。大変失礼いたしました。 $_SESSION['cart'][$_POST(商品コード)] += $_POST(商品価格); とした場合は無事にセッションに格納されるのですが他の商品購入数などを格納する場合、どのように記述すればいいかわからず困っております。 引き続きアドバイスお待ちしております。
お礼
ご回答ありがとうございます。 試したところ、無事に値を取得することができました。 本当にありがとうございます。 >個数だけセッションに入れて価格はデータベースから取得して乗算する方法もありますが アドバイスありがとうございます。 値段などはデータベースで取得してきてもいいのですが システムの事情でここで定義してあげる必要がありましたのでこのような形で格納させていただく形にしました。 無事に値が取得できて助かりました! 本当にありがとうございます。