| Server IP : 172.67.187.206 / Your IP : 172.71.28.155 Web Server : Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30 System : Windows NT WIN-ECQAAA40806 6.2 build 9200 (Windows Server 2012 Standard Edition) i586 User : SYSTEM ( 0) PHP Version : 5.6.30 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : E:/Inetpub/www/training/admin - Copy/ |
Upload File : |
<?php
include("../session.php");
// ตรวจสอบสิทธิ์ admin
if ($role != 'admin') {
header("Location: ../index.php");
exit;
}
include("../db.php");
// สถิติทั่วไป
$stats = [
'total_users' => 0,
'total_subjects' => 0,
'total_questions' => 0,
'total_exams' => 0,
'pass_rate' => 0,
'avg_score' => 0
];
// จำนวนผู้ใช้ (เฉพาะ role = 'user')
$result = mysqli_query($conn, "SELECT COUNT(*) as count FROM users WHERE role = 'user'");
if ($row = mysqli_fetch_assoc($result)) {
$stats['total_users'] = $row['count'];
}
// จำนวนวิชา
$result = mysqli_query($conn, "SELECT COUNT(*) as count FROM subjects");
if ($row = mysqli_fetch_assoc($result)) {
$stats['total_subjects'] = $row['count'];
}
// จำนวนคำถามทั้งหมด
$result = mysqli_query($conn, "SELECT COUNT(*) as count FROM questions");
if ($row = mysqli_fetch_assoc($result)) {
$stats['total_questions'] = $row['count'];
}
// จำนวนการสอบทั้งหมด
$result = mysqli_query($conn, "SELECT COUNT(*) as count FROM exam_results");
if ($row = mysqli_fetch_assoc($result)) {
$stats['total_exams'] = $row['count'];
}
// อัตราการสอบผ่าน
if ($stats['total_exams'] > 0) {
$result = mysqli_query($conn, "SELECT COUNT(*) as count FROM exam_results WHERE passed = 1");
if ($row = mysqli_fetch_assoc($result)) {
$stats['pass_rate'] = round(($row['count'] / $stats['total_exams']) * 100, 2);
}
}
// คะแนนเฉลี่ย
$result = mysqli_query($conn, "SELECT AVG(percentage) as avg_score FROM exam_results");
if ($row = mysqli_fetch_assoc($result)) {
$stats['avg_score'] = round($row['avg_score'], 2);
}
// สถิติการสอบแต่ละวิชา
$subject_stats = [];
$result = mysqli_query($conn, "SELECT id, name FROM subjects ORDER BY name");
while ($subject = mysqli_fetch_assoc($result)) {
$subject_id = $subject['id'];
// จำนวนการสอบในวิชานี้
$res = mysqli_query($conn, "SELECT COUNT(*) as count FROM exam_results WHERE subject_id = $subject_id");
$exam_count = 0;
if ($row = mysqli_fetch_assoc($res)) {
$exam_count = $row['count'];
}
// จำนวนผู้สอบผ่าน
$res = mysqli_query($conn, "SELECT COUNT(*) as count FROM exam_results WHERE subject_id = $subject_id AND passed = 1");
$pass_count = 0;
if ($row = mysqli_fetch_assoc($res)) {
$pass_count = $row['count'];
}
// อัตราการผ่าน
$pass_rate = 0;
if ($exam_count > 0) {
$pass_rate = round(($pass_count / $exam_count) * 100, 2);
}
// คะแนนเฉลี่ย
$avg_score = 0;
$res = mysqli_query($conn, "SELECT AVG(percentage) as avg FROM exam_results WHERE subject_id = $subject_id");
if ($row = mysqli_fetch_assoc($res)) {
$avg_score = round(isset($row['avg']) ? $row['avg'] : 0, 2); // แก้ไขตรงนี้จาก ?? เป็น ternary operator
}
// จำนวนข้อสอบในวิชานี้
$res = mysqli_query($conn, "SELECT COUNT(*) as count FROM questions WHERE subject_id = $subject_id");
$question_count = 0;
if ($row = mysqli_fetch_assoc($res)) {
$question_count = $row['count'];
}
$subject_stats[] = [
'id' => $subject_id,
'name' => $subject['name'],
'exams' => $exam_count,
'pass_count' => $pass_count,
'pass_rate' => $pass_rate,
'avg_score' => $avg_score,
'questions' => $question_count
];
}
// สถิติการสอบล่าสุด (10 รายการ)
$recent_exams = [];
$result = mysqli_query($conn, "
SELECT e.*, u.username, s.name as subject_name
FROM exam_results e
JOIN users u ON e.user_id = u.id
JOIN subjects s ON e.subject_id = s.id
ORDER BY e.test_date DESC
LIMIT 10
");
while ($row = mysqli_fetch_assoc($result)) {
$recent_exams[] = $row;
}
// ผู้ใช้ที่มีกิจกรรมมากที่สุด (5 อันดับแรก)
$active_users = [];
$result = mysqli_query($conn, "
SELECT u.id, u.username, COUNT(e.id) as exam_count
FROM users u
JOIN exam_results e ON u.id = e.user_id
GROUP BY u.id
ORDER BY exam_count DESC
LIMIT 5
");
while ($row = mysqli_fetch_assoc($result)) {
$active_users[] = $row;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>สถิติการใช้งานระบบ</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<style>
body { padding-top: 20px; }
.stat-box {
text-align: center;
padding: 15px;
margin-bottom: 20px;
border-radius: 5px;
color: white;
}
.stat-box h4 { font-size: 16px; margin-top: 0; }
.stat-box .number { font-size: 24px; font-weight: bold; }
.bg-primary { background-color: #337ab7; }
.bg-success { background-color: #5cb85c; }
.bg-info { background-color: #5bc0de; }
.bg-warning { background-color: #f0ad4e; }
.panel { margin-top: 20px; }
.chart-container { height: 300px; }
</style>
</head>
<body>
<div class="container">
<h3 class="text-center">สถิติการใช้งานระบบ</h3>
<p class="text-right">
<a href="dashboard.php" class="btn btn-default btn-sm">← กลับหน้าหลัก</a>
</p>
<!-- สถิติภาพรวม -->
<div class="row">
<div class="col-md-3">
<div class="stat-box bg-primary">
<h4>จำนวนผู้ใช้</h4>
<div class="number"><?php echo $stats['total_users']; ?></div>
</div>
</div>
<div class="col-md-3">
<div class="stat-box bg-success">
<h4>จำนวนวิชา</h4>
<div class="number"><?php echo $stats['total_subjects']; ?></div>
</div>
</div>
<div class="col-md-3">
<div class="stat-box bg-info">
<h4>จำนวนคำถามทั้งหมด</h4>
<div class="number"><?php echo $stats['total_questions']; ?></div>
</div>
</div>
<div class="col-md-3">
<div class="stat-box bg-warning">
<h4>จำนวนการสอบทั้งหมด</h4>
<div class="number"><?php echo $stats['total_exams']; ?></div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">อัตราการสอบผ่าน</div>
<div class="panel-body">
<div class="chart-container">
<canvas id="passRateChart"></canvas>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">สถิติการสอบแต่ละวิชา</div>
<div class="panel-body">
<div class="chart-container">
<canvas id="subjectStatsChart"></canvas>
</div>
</div>
</div>
</div>
</div>
<!-- สถิติแยกตามวิชา -->
<div class="panel panel-default">
<div class="panel-heading">รายละเอียดสถิติแต่ละวิชา</div>
<div class="panel-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>วิชา</th>
<th>จำนวนข้อสอบ</th>
<th>จำนวนการสอบ</th>
<th>จำนวนผ่าน</th>
<th>อัตราการผ่าน</th>
<th>คะแนนเฉลี่ย</th>
</tr>
</thead>
<tbody>
<?php foreach ($subject_stats as $subject): ?>
<tr>
<td><?php echo htmlspecialchars($subject['name']); ?></td>
<td><?php echo $subject['questions']; ?></td>
<td><?php echo $subject['exams']; ?></td>
<td><?php echo $subject['pass_count']; ?></td>
<td><?php echo $subject['pass_rate']; ?>%</td>
<td><?php echo $subject['avg_score']; ?>%</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<!-- การสอบล่าสุด -->
<div class="panel panel-default">
<div class="panel-heading">การสอบล่าสุด</div>
<div class="panel-body">
<table class="table table-bordered">
<thead>
<tr>
<th>วันที่</th>
<th>ผู้ใช้</th>
<th>วิชา</th>
<th>คะแนน</th>
<th>เปอร์เซ็นต์</th>
<th>ผลสอบ</th>
</tr>
</thead>
<tbody>
<?php foreach ($recent_exams as $exam): ?>
<tr>
<td><?php echo date('d/m/Y H:i', strtotime($exam['test_date'])); ?></td>
<td><?php echo htmlspecialchars($exam['username']); ?></td>
<td><?php echo htmlspecialchars($exam['subject_name']); ?></td>
<td><?php echo $exam['score']; ?></td>
<td><?php echo $exam['percentage']; ?>%</td>
<td>
<?php if($exam['passed']): ?>
<span class="label label-success">ผ่าน</span>
<?php else: ?>
<span class="label label-danger">ไม่ผ่าน</span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<!-- ผู้ใช้ที่มีกิจกรรมมากที่สุด -->
<div class="panel panel-default">
<div class="panel-heading">ผู้ใช้ที่มีกิจกรรมมากที่สุด</div>
<div class="panel-body">
<table class="table table-bordered">
<thead>
<tr>
<th>ผู้ใช้</th>
<th>จำนวนการสอบ</th>
</tr>
</thead>
<tbody>
<?php foreach ($active_users as $user): ?>
<tr>
<td><?php echo htmlspecialchars($user['username']); ?></td>
<td><?php echo $user['exam_count']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
<script>
// กราฟแสดงอัตราการสอบผ่าน
var passRateCtx = document.getElementById('passRateChart').getContext('2d');
var passRateChart = new Chart(passRateCtx, {
type: 'pie',
data: {
labels: ['ผ่าน', 'ไม่ผ่าน'],
datasets: [{
data: [
<?php echo $stats['pass_rate']; ?>,
<?php echo 100 - $stats['pass_rate']; ?>
],
backgroundColor: ['#5cb85c', '#d9534f']
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
title: {
display: true,
text: 'อัตราการสอบผ่านรวม: <?php echo $stats['pass_rate']; ?>%'
}
}
});
// กราฟแสดงสถิติแต่ละวิชา
var subjectStatsCtx = document.getElementById('subjectStatsChart').getContext('2d');
var subjectStatsChart = new Chart(subjectStatsCtx, {
type: 'bar',
data: {
labels: [
<?php foreach ($subject_stats as $subject): ?>
'<?php echo addslashes($subject['name']); ?>',
<?php endforeach; ?>
],
datasets: [{
label: 'จำนวนการสอบ',
data: [
<?php foreach ($subject_stats as $subject): ?>
<?php echo $subject['exams']; ?>,
<?php endforeach; ?>
],
backgroundColor: '#337ab7'
}, {
label: 'อัตราการผ่าน (%)',
data: [
<?php foreach ($subject_stats as $subject): ?>
<?php echo $subject['pass_rate']; ?>,
<?php endforeach; ?>
],
backgroundColor: '#5cb85c'
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
</script>
</body>
</html>