実現したいこと
施設ごとに、施設の利用者がどれだけ商品を購入したのかを表示できる請求画面を作っています。
施設ごとに、その月の購入データを小計としてまとめ、指定した月のデータを
表示させたいと考えていますがやり方が分かりません。
添付してあるイメージ画像のようなものを作りたいと考えています。
カラムについて
主に以下のカラムを使用しています。
法人コード:company_code
施設コード:home_code
施設名:home_name
利用者コード:person_code
商品の購入個数:quantity
一回の購入で施設が使った金額:total_price
現状のコード
PHP
1 2//$monthyearには202110(2021年10月)のように、ユーザーが年月を指定するための数字が入っています。 3 4$purchase_sql = "SELECT home_name,home_code,person_code,quantity,total_price FROM purchase_data 5WHERE company_code = :company_code AND DATE_FORMAT(created_at, '%Y%m')='".$monthyear."' GROUP BY home_code"; 6 $pdo = new pdo(DSN,DB_USER,DB_PASS); 7 8 //購入データ一覧を取得 9 $purchase_data = $pdo->prepare($purchase_sql); 10 $purchase_data->bindParam(":company_code", $company_code); 11 $purchase_data->execute(); 12 $purchase_rows = $purchase_data->fetchAll(PDO::FETCH_ASSOC); 13 $pdo = ''; 14 15 <div class="order_block_container"> 16 <?php $loop_number = 1; 17 foreach($purchase_rows as $p_row) : 18 ?> 19 <div class="order_block_row"> <!-- h()はhtmlspecialchars() --> 20 <div class="order_block number_block"><?php echo $loop_number ?></div> 21 <div class="order_block"><?php echo h($p_row['home_name']) ?></div> 22 <div class="order_block"><?php echo h($p_row['home_code']) ?></div> 23 <div class="order_block"><?php echo h($p_row['person_code']) ?></div> 24 <div class="order_block"><?php echo h($p_row['quantity']) . '個' ?></div> 25 <div class="order_block"><?php echo h($p_row['total_price']) . '円' ?></div> 26 </div><!--/.order_block_row --> 27 <?php 28 $loop_number++; 29 endforeach; ?> 30 </div><!--/.order_block_container --> 31
試したこと
「総利用者数」は「person_code」をSQLのCOUNT関数で数えようとしました。
しかしこれは配列でないと使用できません。
「総売買個数」「金額」は、foreachのループの最後で全て足して表示しようとしました。
しかし「施設1」「施設2」「施設3」全てのデータを足してしまい、施設ごとの小計が取れません。
SQLで「GROUP BY」を使用して施設ごとにデータをまとめましたが、
画像のように表示ができません。
ご教示いただけますと幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー