前提・実現したいこと
生徒が課題を提出し、教員は課題ごとに提出状況を確認する。というものを作成しております。
今回、生徒が出した課題を「課題番号」「提出数」「未提出数」と表にしたいです。
課題が1から3まであるとして、
kadai_num | 提出数 | 未提出数 |
---|---|---|
1 | 3 | 1 |
2 | 4 | 2 |
のような形にしたいです。
kadaiテーブル
CREATE table kadai{
id int(11) AUTO_INCREMENT
kadai_num int(11)
hyoka int(11) NULL
comm text
kamoku_id int(11)
user int(11)
teisyutsu int(11) DEFAULT 0
}
です。
評価は1が○、0が△、NULLが×。
提出は1が提出、0が未提出となっています。
該当のソースコード
php
1<?php 2$dsn= "localhost"; 3$username = "root"; 4$password = ""; 5$pdo = new PDO($dsn, $username, $password); 6 7$query ='SELECT DISTINCT kadai_num 8 FROM kadai'; 9$stmt = $pdo->query($query); 10$rows = $stmt->fetchAll(); 11 12$sql = 'SELECT count(*) 13 from kadai 14 WHERE teisyutsu = 1'; //出している数 15$stmt2 = $pdo->query($sql); 16$test = $stmt2->fetchColumn(); 17 18$sql = 'SELECT count(*) 19 from kadai 20 WHERE hyoka IS NULL'; //出していない数 21$stmt3 = $pdo->query($sql); 22$test2 = $stmt3->fetchColumn(); 23 24?> 25<!DOCTYPE html> 26<html lang="ja"> 27 <head> 28 <meta charset="utf-8mb4"> 29 <link rel="stylesheet" type="text/css" href="css/default.css"> 30 </head> 31 <body> 32 <table border="2"> 33 <tr>Web</tr> 34 <th>課題番号</th> 35 <th>提出済み</th> 36 <th>未提出</th> 37 <?php 38 39 foreach($rows as $row){ 40 echo "<tr>"; 41 echo "<td>{$row['kadai_num']}</td>"; 42 echo "<td>{$test}</td>"; 43 echo "<td>{$test2}</td>"; 44 echo "</tr>"; 45 } 46 ?> 47 </table> 48 </body> 49 50</html> 51
自身の知識が未熟なため
・課題1の提出数と未提出数が、課題2以降にも表示されている(SQL文,phpから間違っているが、改善方法がわからない)
→kadai_numごとに提出数と未提出数を表示させたい。
・表示結果では提出4、未提出3となっているがテーブルに全部で7つはいっており、そのうちkadai_numが1なのは3つのみ。(kadaiテーブルすべてが出てきている。)
→解決いたしました。
以上の2つがわかりません。
ご意見、ご教授お願いいたします。
回答2件
あなたの回答
tips
プレビュー