phpで買い物かごを下記のようなコードで作成しているのですが、個数を指定して追加するたびに前回追加した個数に上乗せして追加されてしまいます。
どのようにコードを書き直せば新たなカートとして追加できるでしょうか?
###item.php
<?php session_start(); ?> <html> <head> <meta charset="UTF-8" /> <title>買い物</title> </head> <body> <p>買い物カゴに追加する個数を指定し「追加」を押して下さい.</p> <form method="POST" action="cart.php"> りんご 1 個 80円 <input type="number" name="apple" value ="0" min="0" /> <br> <!-- valueは初期値,minは下限を設定する --> オレンジ 1 個 100円 <input type="number" name="orange" value ="0" min="0" /> <br> バナナ 1 房 200円 <input type="number" name="banana" value ="0" min="0" /> <br> <input type="submit" value="追加" /> </form> </body> </html>
###cart.php
<?php session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>買い物カゴ</title> </head> <body> <?php $apple = filter_input(INPUT_POST,"apple"); $orange = filter_input(INPUT_POST,"orange"); $banana = filter_input(INPUT_POST,"banana"); if(isset($_SESSION["apple"])){//isset()はデータが存在するか否かを調べる $apple += $_SESSION["apple"]; //+=という演算子を使うと左辺と右辺の和を左辺に代入する } if(isset($_SESSION["orange"])){//isset()はデータが存在するか否かを調べる $orange += $_SESSION["orange"]; //+=という演算子を使うと左辺と右辺の和を左辺に代入する } if(isset($_SESSION["banana"])){ $banana += $_SESSION["banana"]; } $_SESSION["apple"] = $apple; $_SESSION["orange"] = $orange; $_SESSION["banana"] = $banana; ?> <?php if($apple > 0); print("りんご $apple 個,") ?> <?php if($orange > 0); print("オレンジ $orange 個,") ?> <?php if($banana > 0); print("バナナ $banana 個") ?> <?php print("を追加しました。") ?> <p>現在,カゴの中には</p> <ul> <li>りんご<?php print($apple); ?>個</li> <li>オレンジ<?php print($orange); ?>個</li> <li>バナナ<?php print($banana); ?>個</li> </ul> <p>が入っています.</p> <?php $a = $apple * 80; $b = $orange * 120; $c = $banana * 200; $price = $a + $b + $c; print("合計金額は${price}円です。") ?> <p>商品を更に追加する場合は<a href="item.php">こちらから</a> </p> </body> </html>
画像でのせられても多分読む人いないですよ。
質問の code は、markdown を使用して適切に記述してください。
回答2件
あなたの回答
tips
プレビュー