PHPの質問です…ショッピングカートを作成したいと、サンプル構文を駆使して記述してみましたが…初心者のため上手くいきません。


問題の構文はこちらから参照ください→ http://kinsekitei.com/prototype/sample.html

セッション関数の配列から値を取り出して、繰り返し表示をしたいのですが…*の部分のforeach構文で、カートに入ってる商品個数を$valueに代入したのですが、値が入るたびに、各購入個数に配列の値が連続して表示されてしまいます。例)1回目、1個は、1個と。2回目が3個なら、13個と全ての商品情報に表示されてしまいます。

商品に入れるたびに「その商品の購入数」を表示するにはどのようにすれば良いでしょうか?どなたかご教授いただけると助かります。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/09/23 19:34:31
  • 終了:2011/09/23 23:34:00

ベストアンサー

id:Jupiter2100 No.1

じゅぴたー回答回数444ベストアンサー獲得回数742011/09/23 20:06:44

ポイント500pt

おそらく、リンク先に記されている「以下の構文の$valueにそれぞれの購入数を代入して繰り返し表示したい。」のループ処理が間違っています。

下記のようにしてみてください。

<?php if(isset($_SESSION['cart']) && count($_SESSION['cart']) > 0){ ?>

<form id="delform" action="delete.php" method="post">

<?php
foreach ($_SESSION['cart'] as $product => $value) {
    $info = product_info($product);

    echo "<input type=\"checkbox\" name=\"ids[] \"value=\"".$product."\" >";
    echo "<img src=\" ".$info['image01']." \" />";
    echo "<div >";
    echo "<h4>".$info['name']."".$info['type']."".$info['prod_num']."".$info['shape_size']."".$info['shape']."".$info['rank']."</h4>";
    echo "<br><h4>";
    echo $value;
    echo "個&nbsp;×&nbsp;&nbsp;&nbsp;";
    echo "".cnv_currency($info['price'])."";
    echo "</h4></div></div><hr class=\"hr_line\">";
}
?>
--以下省略--
id:DrArabes

ご回答ありがとうございます!この場合、カートに入る商品詳細をforeach構文で繰り返しているためでしょうか…

次の商品をカートに入れた場合に、それぞれの商品個数が連続して表記されてしまいます。例)1回目を1個なら1個。2回目を3個なら13個と…商品毎に表記されてしまいます。

カートに商品が代入された毎に「それぞれに注文したの商品個数」を抽出したいのですが…改善方法をご存知でしょうか?

ご教授のほど、よろしくお願いします。

2011/09/23 20:40:03
  • id:Jupiter2100
    >それぞれに注文したの商品個数
    「それぞれ」の意味を具体的に示してください。
    たとえば商品AとBの購入個数が同時に変更になった場合は、どのように処理すればいいのでしょう。
  • id:DrArabes
    お世話になります、返信ありがとうございます。抽象的な返信内容で失礼しました。


    具体的なサンプルはこちらを参照ください。
    http://kinsekitei.com/cart/checkout.php

    カートに入れた場合の商品個数の変更機能は、若輩者なので実装しておりませんです。

    「それぞれ」とは、商品Aを1個とし、商品Bを3個カートに入れた場合のカートの内容を表示した場合に…

    商品Aだけの場合は、
    商品A 1個となりますが、私が作成したスクリプトで商品Bを3個購入した場合ですと…
    ------------------------
    商品A 13個
    商品B 13個 
    --------------------------
    になってしまいます。これを、

    -------------------------
    商品A 1個
    商品B 3個 
    -------------------------

    としたいとおもっております。

    $_SESSION['cart']に代入されている。商品個数を商品毎に抽出する場合は、どのようにすればよろしいでしょうか?ご教授いただけると助かります。

    よろしくお願いします。
  • id:DrArabes
    すみません参照ページが参考になってなかったので…
    こちらから商品をカートに入れてください。

    商品A
    http://kinsekitei.com/stone/agate/agate_b001.php
    商品B
    http://kinsekitei.com/stone/amber/amber_b001.php
  • id:Jupiter2100
    コメントをありがとうございます。
    回答No.1の内容を大幅に加筆訂正しましたのでご確認ください。
  • id:DrArabes
    何度も、解説の返信ありがとうございました! 

    無事に解決いたしました。これで作業も大きく前進しました。

    シンプルに記述する事を心がけます。

    また、ご教授いただける機会がありましたら、よろしくご指導ください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません