• ベストアンサー

ショッピングカートのセッション処理について。

いつも拝見し大変お世話になっております。 現在ショッピングカートを作成しておりますが、商品購入画面から”購入する”のボタンを押したときに、購入する商品ID,注文数量、サイズ、商品価格をセッションとして 格納したいのですがうまくいかず困っております。 使用PHPバージョンは4.4です ソースは以下のとおりです。 //購入するのボタンを押したときの処理 if (isSet($_POST['cart']){ $_SESSION['cart'][$_POST(商品コード)] =+$_POST(商品価格); //↑セッション格納ここまで //(テスト)格納したデータを表示 print_r($_SESSION['cart']); } いろいろと調べて該当する商品コードと値段は 格納することができたのですが、その他の商品購入数などをデータにさらに格納する時どうすればいいかわかりませんでした。 お忙しい中大変申し訳ございませんがお知恵をお貸しいただけますでしょうか?よろしくお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

if (!isset($_SESSION['cart'][$_POST['商品コード']])) { $_SESSION['cart'][$_POST['商品コード']] = array('price'=>$_POST['商品価格'], 'number'=>1); } else { $_SESSION['cart'][$_POST['商品コード']]['price'] += $_POST['商品価格']; $_SESSION['cart'][$_POST['商品コード']]['number']++; } とか 個数だけセッションに入れて価格はデータベースから取得して乗算する方法もありますが。

nakaskk
質問者

お礼

ご回答ありがとうございます。 試したところ、無事に値を取得することができました。 本当にありがとうございます。 >個数だけセッションに入れて価格はデータベースから取得して乗算する方法もありますが アドバイスありがとうございます。 値段などはデータベースで取得してきてもいいのですが システムの事情でここで定義してあげる必要がありましたのでこのような形で格納させていただく形にしました。 無事に値が取得できて助かりました! 本当にありがとうございます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

セッションを利用せずformのhiddenで渡すのが賢明かと。

nakaskk
質問者

お礼

ご回答ありがとうございます。 今回のスクリプトに関してはhiddenで渡すよりも セッションで渡したほうがベターではないかと考えました。 hiddenで渡す手もあるのですね、データの渡し方にはいろいろなやり方がありますので、アドバイスいただいて本当に勉強になります。

nakaskk
質問者

補足

無事にデータを格納することができましたので 質問を閉じさせていただきたいと思います。 papillon68様、php504様、yambejp様本当に ありがとうございました。

回答No.1

> if (isSet($_POST['cart']){ if (isset($_POST['cart']){ > $_SESSION['cart'][$_POST(商品コード)] =+$_POST(商品価格); $_SESSION['cart'][$_POST(商品コード)] += $_POST(商品価格); としてみてはいかがでしょうか。

nakaskk
質問者

お礼

早速のご回答ありがとうございます。 $_SESSION['cart'][$_POST(商品コード)] += $_POST(商品価格); とスクリプトでは記載しておりました。ご指摘ありがとうございました。書き込みする際に私が記載を間違っておりました。大変失礼いたしました。 $_SESSION['cart'][$_POST(商品コード)] += $_POST(商品価格); とした場合は無事にセッションに格納されるのですが他の商品購入数などを格納する場合、どのように記述すればいいかわからず困っております。 引き続きアドバイスお待ちしております。

関連するQ&A

  • ショッピングカートで$_SESSIONへデータを格納する方法

    $syohin_code = $_POST['syohin_code']; $syohin_name = $_POST['syohin_name']; $sale_price = $_POST['sale_price']; $kazu = $_POST['kazu']; $_SESSION['cart']['$syohin_code'] = array ("syohin_code" => $syohin_code , "syohin_name" => $syohin_name, "sale_price" => $sale_price , "kazu" => $kazu ); foreach ($_SESSION['cart']['$syohin_code'] as $key => $value){ echo $key . $value;} データベースより一覧表示した商品を「カートに入れる」ボタンを使いPOSTした値を上記のcart.phpへ飛ばし、配列としてセッション変数に格納しました。ひとつの値は上記より取得できるのですが、複数の商品を格納する方法がどうしても分かりません。それともどこかに保存されているのでしょうか? この取得したデータを元に、購入商品全てを一覧表示させたいのですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ショッピングカートの作成しようと思ってます。

    今ショッピングカートの商品を選んでカートに入れたのち別のページに飛ばして精算させるプログラムを作ってますがプログラムがうまく作動しません。 ショッピングカートのプログラムは <?php if (isset($_POST['cart'])){ $_SESSION['cart'][$_POST('code')] += $_POST('num'); print "<p>カートに入れました。</p>\n"; } else if ($_POST['delete']) { $_SESSION['cart'] = array(); print "<p>カートを空にしました。</p>\n"; } ?> 精算プログラムのエラー箇所は以下の感じです。 foreach ($_SESSION['cart'] as $code => $num) { $rs = mysql_query($con, "select * from member7 where code=$code"); $row = array($rs); $ss = $num * $row['tanka']; print "<tr><td>{$row['name']}</td><td>{$row['tanka']}円</td><td>$num</td><td>{$ss}円</td></tr>\n"; $sum += $ss; } 長ったらしいですが解決策を教えてくださればと思います。 PHPは5.2.0を使用してください。

    • ベストアンサー
    • PHP
  • ショッピングカートの合計金額を求めたい…。

    お世話になります。 ショッピングカートを作っているのですが、購入商品を一覧表示させて その商品数と、合計金額を表示させたいのですが色々試しましたが いい方法が思い浮かびません…。 初心者なのですが、どなたか宜しくご教授お願いします。 ちなみに、ArrayListに購入商品を格納し、それをセッションに セットしてます。 購入商品の各項目には、商品番号・商品名・価格・購入個数があります。 説明不足であればスグに捕捉致します。

    • ベストアンサー
    • Java
  • ショッピングカートの作成

    今ショッピングカートを作成しようとしていて商品サンプルがいくつかあり「カートへ」ボタンを押すと精算ページへ飛び精算を行うというプログラムをつくっているのですがいくつかのサンプルでどれを選んでも一番上のサンプルの精算しか行えません。どうすれば解決できますでしょうか?よろしくお願いします。 ショッピングカートのプログラムの一部です。 while($row = mysql_fetch_row($result)){; $code = $row['0']; print "<form method='post' action='cart_syohin2.php'><tr>"; print "<td rowspan='2'>"; if (file_exists("cart_image/$code.jpg")) print "<img src='cart_image/$code.jpg' border='0'>"; print "</td>"; print "<td rowspan='3'>{$row['3']}</td>"; print "<td nowrap>{$row['2']}円</td></tr>"; print "<tr><td nowrap><input type='text' name='num' size='3'>個</td></tr>"; print "<tr><td>{$row['1']}</td>"; print "<td><input type='hidden' name='code' value='$code'><input type='submit' name='cart' value='カートへ'>"; print "</td>"; print "</tr></form>\n"; }

    • 締切済み
    • PHP
  • セッション変数にカンマ区切りでいれていったデータを削除したい

    ショッピングカートを作りたいのですが、セッションのデータから特定の値を削除する方法がわかりません。 $_SESSION['vals']['cart'].="{$_POST['code']},"; $_SESSION['vals']['cart'].="{$_POST['name']},"; $_SESSION['vals']['cart'].="{$_POST['price']},"; $_SESSION['vals']['cart'].="{$_POST['num']},"; たとえば↑みたいに、他のページから飛んできたデータを$_SESSION['vals']['cart']に , 区切りで、どんどんデータを入れていったとしたら、どうやって、特定の値のデータを$_SESSION['vals']['cart']から削除するのでしょうか? よろしくおねがいいたします。

    • 締切済み
    • PHP
  • ネットショップ・ショッピングカートについて教えて下さい。

    自分の探している機能がついているショッピングカートが見つかりません。 ・バリエーションを選択すると販売価格と数量が自動で変わる。 このようなページです。→http://www.yugi1.com/product/19 ・メールマガジンの登録するボタンがある。 ・ページのデザインが自由にできる。 以上の機能があるサーバーを探しています。 また、下記の2つのサイトは同じショッピングカートを使っているのでしょうか?どこのショッピングカートか分かる方がいましたら教えて下さい。 http://www.cardshop-happy.com/ http://www.yugi1.com/

  • セッションにIDを振って値を代入

    PHP初心者です。 PHP4.2.xを使っています。 ショッピングカートで購入した商品データをセッションで維持してカートに追加する機能部分を作っていますがうまくいきません。 コードは以下のとおりです。 【goods.php】 ----------------------------------------------------------- <? session_start(); ?> ■商品1 <form action="cart.php" method="POST"> <input type="hidden" name="id" value="1" /> <input name="num" type="text" /> <INPUT type=submit value="カートに追加"> </form> ■商品1 <form action="cart.php" method="POST"> <input type="hidden" name="id" value="2" /> <input name="num" type="text" /> <INPUT type=submit value="カートに追加"> </form> ----------------------------------------------------------- 【cart.php】 ----------------------------------------------------------- <? session_start(); if($_POST['id'] != ""){ $id = $_POST['id']; $num = $_POST['num']; // セッション名自体をIDで作っています。中身は個数のみです。 $_SESSION["$id"] = $num; } echo "カートに入ってる商品<br />"; for ($i = 0; $i<=100; $i++) { if (!empty($_SESSION["$i"])){ echo $_SESSION["$i"]. "<br>\n"; } } ?> ----------------------------------------------------------- goods.phpのファイルで商品1と商品2を1つずつカートに入れれば cart.phpのページで 1 1 と表示されるはずが、1しか出ません。 $_SESSION["1"] $_SESSION["2"]の中身が表示される予定でしたがそうならず、 そのときPOSTで投げられたIDしか$_SESSION["$id"]に保持されません。 どうすればどんどん商品をカートに追加できますでしょうか? アドバイスのほどどうぞよろしくお願いします!

    • ベストアンサー
    • PHP
  • PHP+MySQLのショッピングカートについて

    PHP+MySQLのショッピングカートについて 宜しくお願いします。 PHP4.4.1+MySQL4.1.15でショッピングサイトを構築しております。 このサイトはPCと携帯に対応させるように構築しております。 携帯でも購入出来る様にする為に、カートはCOOKIEでは無く、SESSIONに依存しております。 ユーザが商品を選択すると、SESSIONに商品IDや、ユーザの選択した内容が格納されます。 複数の商品ID、選択内容を格納させる為に多次元配列にて格納しております。 買い物が終わり決算する時に、個人情報を入力し、確認ページ表示後にMySQLのDBに個人情報と選択項目をそれぞれinsertしていきます。 商品情報については、カートに入れた商品数分を繰り返し処理を行い、1レコードずつinsertしていきます。 MySQLのDBに書き込み後、自動返信にてメールを店舗とユーザに送信しています。 この様なシステムで、問題が発生しております。 決算後、個人情報、商品情報が欠落している場合があります。DBにも自動返信メールにも明記されず、スッポリ無くなっているのです。 それも、全データではなく、個人情報の電話番号だけとか、商品情報の選択項目の1つだけといった具合です。 毎回ではなく、ときどき現れます。 これはプログラムの問題なのでしょうか?それとも、サーバの処理能力の問題で、同時アクセス時に起きている現象なのでしょうか? 私の環境下では何度テストしても現象が現れない為に、原因が分からず悩んでおります。

    • ベストアンサー
    • PHP
  • Amazonのショッピングカートについて

    質問させていただきます。 Amazonでネットショッピングをしているのですが、 欲しい商品を見つけて、 「ショッピングカートに入れる」をクリック、 あとは画面に従って、「ログイン」→「購入を確定」 と一連の流れを済ませて購入完了するのですが、 いつも購入後も、同じ商品(今しがた購入済みの商品)が ショッピングカートに残っております。 毎回、カートから消しているのですが、面倒ですし、また誤って購入してしまわないか 心配です。 皆さんも同じように、購入後、カートに残っているのでしょうか? また、そうでないならば、どのようにすれば是正されますでしょうか? ご教授いただければ幸いです。 よろしくお願いいたします。

  • ショッピングカートについて

    ショッピングカート機能付のソフトを使ってネットショップのホームページを作ったのですが、レンタルしているサーバ(ロリポップ)がSSLに対応していない事に後から気つきました。しかし、サーバが提供しているショッピングカートを使うと注文画面からSSL対応になるそうです。この場合、ソフトのショッピングカートはどうなるんですか?サーバのショッピングカートの案内には、商品管理や特定商取引の入力もできるとか、使いやすいデザイン、売り上げデータも専用フォームから検索して管理などあるのですが、また最初から商品画像をつけたり、説明文を入力したりデザインも新たにするんでしょうか? サーバ提供のショッピングカートにするということはショッピングに関するページは作りなおしですか?

専門家に質問してみよう