前提・実現したいこと
ショッピングカートの合計金額を表示したい。
発生している問題・エラーメッセージ
ショッピングカート画面で、カートに入れたそれぞれの商品の商品名、数量、各商品の小計を表示するまではテキストを参考にして出来ています。それに追加して、最後にすべての合計金額を表示したいのですが、テキストには合計金額の表示は言及していなかったので、自分なりに調べながら、一応自分で何をしているか理解できている(と思う)範囲でコードを書き、合計金額も表示されました。それがコードとして正しいのかを見て頂けますでしょうか。また、もっと端的な良い方法があると思うのですが、何か別のコードの書き方があればご教示ください。
エラーメッセージ
該当のソースコード
PHP <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Shop</title> <link rel="stylesheet" href="shop.css" class="css"> </head> <body> <?php $cart=$_SESSION['cart']; /*カートに入った各商品のcodeが配列で入っている*/ $qty=$_SESSION['qty']; /*カートに入った各商品の数量が配列で入っている*/ $max=count($cart); /*カートに入った商品点数*/ $dsn='mysql:dbname=shop;host=localhost;charset=utf8'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); foreach($cart as $key => $val) { $sql='SELECT name,price FROM table WHERE code=?'; $stmt=$dbh->prepare($sql); $data[0]=$val; $stmt->execute($data); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $pro_name[]=$rec['name']; $pro_price[]=$rec['price']; } $dbh=null; ?> <?php for($i=0;$i<$max;$i++) { ?> 商品名: <?php print $pro_name[$i]; ?><br> 価格: <?php print $pro_price[$i]; ?>円<br> 数量: <?php print $qty[$i]; ?><br> 小計: <?php print $pro_price[$i]*$qty[$i]; ?>円<br> <?php } ?> <!--以下、合計金額を出すために、自分なりに考えたコードです。--> <?php for($i=0;$i<$max;$i++) { $sum[]=0; $sum[$i]=$pro_price[$i]*$qty[$i]; $total[]=array_sum($sum); } ?> 合計: <?php print $total[--$max];?> </body> </html>
試したこと
コードを見て頂ければ分かるように、forループで回して小計の配列を$sumという変数に入れ、配列の値を合計してくれるarray_sum()という関数を見つけたので、それを使って合計の値を$total[]という配列に入れ、配列の中の一番最後の値が合計金額になるはずなのでそれを取り出せばいいと思い(例えば商品が5つであれば、添え字が4になるように)、商品点数が入った$maxから1を引き(--$max)、$total[--$max]を表示させたところ、目的の合計金額が出ました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/16 03:31