前提・実現したいこと
phpの練習で簡易ECサイトを制作しています。
購入履歴を表示すると購入した日時毎に商品が表示される状態です。
しかし、同日時に購入した複数商品も独立してそれぞれ表示されてしまう為
同日時毎にまとめて商品を表示できるようにしたいです。
お手数ですがご教授いただけると幸いです。
発生している問題・エラーメッセージ
データベースに登録した購入データをforeachで回した際に複数商品購入による 重複した日付を削除し、購入した日時毎の商品履歴を表示しようとすると 重複した日付が削除されないもしくは全ての日付の表示が消えてしまうとういう状況です。
該当のソースコード
php
1<?php 2 3require_once('functions.php'); 4 5session_start(); 6 7$name = $_SESSION['name']; 8 9if (isset($_SESSION['id'])) { 10 $msg = 'こんにちは、' . h($name) . ' さん'; 11 $link = '<a href="logout.php">ログアウト</a>'; 12} else { 13 $msg = 'ようこそZAZATOWNへ'; 14 $login_msg = 'ログインしてください'; 15 $link = '<a href="login.php">ログイン</a>'; 16} 17 18if (isset($_SESSION['name'])) { 19 20 $dbh = connectDb(); 21 22 $sql = "SELECT purchase.id, purchase.product_id, purchase.name, products.productImage, products.brandName, products.productName, purchase.size, purchase.count, products.price, purchase.created FROM purchase INNER JOIN products ON purchase.product_id = products.id"; 23 $stmt = $dbh->prepare($sql); 24 $stmt->execute(); 25 $history = $stmt->fetchAll(); 26} else { 27 $login_msg = 'ログインしてください'; 28} 29 30 31 // $tmp = ''; 32 // foreach ($history as $value) { 33 // if ($value['created'] !== $tmp) { 34 // $tmp = $value['created']; 35 // } 36// } 37 38 $sql = "SELECT created, sum(price) from purchase group by created"; 39 $stmt = $dbh->prepare($sql); 40 // $stmt->bindValue(':created', $created); 41 $stmt->execute(); 42 $total = $stmt->fetchAll(); 43 44 // print_r($price); 45 46 $total = array_column($total, 'sum(price)'); 47 48?> 49 50 51<!DOCTYPE html> 52<html lang="ja"> 53<head> 54 <meta charset="utf-8"> 55 <title>EC SITE</title> 56 <link rel="stylesheet" href="styles.css"> 57</head> 58<body> 59 <header> 60 <p><?php echo $msg; ?></p> 61 <a href="index.php"><h1>ZAZA TOWN</h1></a> 62 <form action="search.php" method="GET"> 63 <input type="search" name="search" placeholder="何かお探しですか?"> 64 <input type="submit" name="submit" value="検索"> 65 </form> 66 <?php echo $link; ?> 67 <a href="history.php">購入履歴</a> 68 <a href="favorite.php"><img src="images/image2.jpeg" alt="お気に入り" title="お気に入り"></a> 69 <a href="cart.php"><img src="images/image1.jpeg" alt="カート" title="カート"></a> 70 </header> 71 <p1>ZAZASALE 2020 開催中 <span>MAX90%OFF</span></p1><br> 72 <?php echo $login_msg; ?> 73 <form action="cart.php" method="POST"> 74 <div class="history_container"> 75 <?php foreach ($history as $row): ?> 76 <p class="purchase_day">購入日時 : <?php echo array_unique(h($row['created'])); ?></p> 77 <p class="purchase_day">合計金額 : <?php echo number_format($total); ?></p> 78 <div class="image"> 79 <img src="images/<?php echo h($row['productImage']); ?>" id="history_img"> 80 </div> 81 <div class="history_content"> 82 <p>ブランド : <?php echo h($row['brandName']); ?></p> 83 <p>アイテム : <?php echo h($row['productName']); ?></p> 84 <p>サイズ : <?php echo h($row['size']); ?></p> 85 <p>個数 : <?php echo h($row['count']); ?></p> 86 <p>金額 : ¥<?php echo number_format(h($row['price'])); ?> (税込)</p> 87 88 <input type="hidden" name="product_id" value="<?php echo h($row['product_id']); ?>"> 89 <input type="hidden" name="productImage" value="<?php echo h($row['productImage']); ?>"> 90 <input type="hidden" name="brandName" value="<?php echo h($row['brandName']); ?>"> 91 <input type="hidden" name="productName" value="<?php echo h($row['productName']); ?>"> 92 <input type="hidden" name="size" value="<?php echo h($row['size']); ?>"> 93 <input type="hidden" name="count" value="<?php echo h($row['count']); ?>"> 94 <input type="hidden" name="price" value="<?php echo h($row['price']); ?>"> 95 <input type="submit" name="cartIn" value="再度購入する"> 96 </div> 97 </div> 98 </form> 99 <?php endforeach; ?> 100 101</body> 102 103</html> 104
試したこと
下記の参考サイトを元に試してみましたが上記の状況となってしまいます。
1、 https://teratail.com/questions/204546
2、 https://qiita.com/YusukeHigaki/items/dbcb726592aa2fa2ff42
3、 https://www.sejuku.net/blog/22733
4、 https://qiita.com/kyuu1999/items/93b02128f07c577b3e48
補足情報(FW/ツールのバージョンなど)
PHP 7.1.33
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。