| 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 : /Inetpub/www/training/user/ |
Upload File : |
<?php
include("../session.php");
if ($role != 'user') {
header("Location: ../index.php");
exit;
}
include("../db.php");
// ดึงข้อมูลวิชาทั้งหมด
$sql = "SELECT s.*, g.group_name
FROM subjects s
LEFT JOIN groups g ON s.group_id = g.user_id
ORDER BY s.curriculum_year DESC";
$result = $conn->query($sql);
$subjects = [];
while ($row = $result->fetch_assoc()) {
// ดึงลิงค์เนื้อหาของแต่ละวิชา
$subject_id = $row['id'];
$links_query = $conn->query("SELECT * FROM subject_content_links WHERE subject_id = $subject_id");
$row['content_links'] = [];
while ($link = $links_query->fetch_assoc()) {
$row['content_links'][] = $link;
}
$subjects[] = $row;
}
// ดึงข้อมูลผลการสอบของผู้ใช้
$user_id = $_SESSION['user_id'];
$exam_results = [];
$result = mysqli_query($conn, "SELECT * FROM exam_results WHERE user_id = $user_id");
while ($row = mysqli_fetch_assoc($result)) {
$exam_results[$row['subject_id']] = $row;
}
// คำนวณสถิติการสอบ
$total_subjects = count($subjects);
$completed_exams = count($exam_results);
$passed_exams = 0;
$failed_exams = 0;
foreach ($exam_results as $exam) {
if ($exam['passed']) {
$passed_exams++;
} else {
$failed_exams++;
}
}
$pending_exams = $total_subjects - $completed_exams;
$completion_percentage = $total_subjects > 0 ? round(($completed_exams / $total_subjects) * 100) : 0;
// ตรวจสอบเงื่อนไขสำหรับเกียรติบัตรพิเศษ
$passed_2568_count = 0; // จำนวนวิชาที่ผ่านในปี 2568
$passed_2565_2567_count = 0; // จำนวนวิชาที่ผ่านในปี 2565-2567
// ดึงรายการวิชาในปี 2568 และ 2565-2567
$subjects_2568 = array_filter($subjects, function($subject) {
return $subject['curriculum_year'] === '2568';
});
$subjects_2565_2567 = array_filter($subjects, function($subject) {
return $subject['curriculum_year'] === '2565-2567';
});
$total_subjects_2568 = count($subjects_2568);
foreach ($exam_results as $exam) {
if ($exam['passed']) {
foreach ($subjects as $subject) {
if ($subject['id'] == $exam['subject_id']) {
if ($subject['curriculum_year'] === '2568') {
$passed_2568_count++;
} elseif ($subject['curriculum_year'] === '2565-2567') {
$passed_2565_2567_count++;
}
break;
}
}
}
}
// ตรวจสอบสิทธิ์รับเกียรติบัตรพิเศษ
$show_special_certificate1_menu = ($passed_2568_count >= $total_subjects_2568 && $total_subjects_2568 > 0); // ผ่านทุกวิชาในปี 2568
$show_special_certificate2_menu = ($show_special_certificate1_menu && $passed_2565_2567_count >= 10); // ผ่านทุกวิชา 2568 และอย่างน้อย 10 วิชาใน 2565-2567
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>หน้าหลัก - ผู้ใช้</title>
<!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<style>
:root {
--primary-color: #4e73df;
--secondary-color: #858796;
--success-color: #1cc88a;
--danger-color: #e74a3b;
--warning-color: #f6c23e;
--light-bg: #f8f9fc;
}
body {
background-color: var(--light-bg);
font-family: 'Prompt', sans-serif;
padding-top: 56px;
}
.main-navbar {
background: linear-gradient(90deg, var(--primary-color) 0%, #224abe 100%);
padding: 0.5rem 1rem;
}
.main-navbar .navbar-brand {
color: white;
font-weight: 600;
}
.main-navbar .nav-link {
color: rgba(255, 255, 255, 0.8);
padding: 0.75rem 1rem;
border-radius: 0.375rem;
transition: all 0.3s;
margin: 0 0.25rem;
}
.main-navbar .nav-link:hover,
.main-navbar .nav-link.active {
color: white;
background-color: rgba(255, 255, 255, 0.1);
}
.main-navbar .nav-link i {
margin-right: 0.5rem;
}
.topbar {
background-color: white;
box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);
}
.card {
border: none;
border-radius: 0.5rem;
box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.1);
margin-bottom: 1.5rem;
}
.card-header {
background-color: #f8f9fc;
border-bottom: 1px solid #e3e6f0;
padding: 1rem 1.25rem;
}
.stat-card {
border-left: 0.25rem solid;
transition: transform 0.3s;
}
.stat-card:hover {
transform: translateY(-5px);
}
.stat-card.completed {
border-left-color: var(--primary-color);
}
.stat-card.passed {
border-left-color: var(--success-color);
}
.stat-card.failed {
border-left-color: var(--danger-color);
}
.stat-card.pending {
border-left-color: var(--warning-color);
}
.stat-icon {
font-size: 2rem;
opacity: 0.3;
}
.table {
border-radius: 0.5rem;
overflow: hidden;
}
.badge {
font-weight: 500;
padding: 0.5rem 0.75rem;
}
.btn-primary {
background-color: var(--primary-color);
border-color: var(--primary-color);
}
.btn-success {
background-color: var(--success-color);
border-color: var(--success-color);
}
.user-greeting {
background: linear-gradient(to right, var(--primary-color), #224abe);
color: white;
border-radius: 0.5rem;
padding: 1.5rem;
margin-bottom: 1.5rem;
}
.progress {
height: 0.5rem;
}
.user-dropdown .dropdown-toggle::after {
display: none;
}
.user-dropdown .dropdown-toggle {
display: flex;
align-items: center;
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
}
.user-dropdown .dropdown-toggle:hover {
color: white;
}
.user-dropdown .dropdown-menu {
margin-top: 0.5rem;
border: none;
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
.content-links-list {
margin-top: 0.5rem;
}
.content-links-list li {
margin-bottom: 0.25rem;
}
@media (max-width: 992px) {
.navbar-collapse {
background-color: var(--primary-color);
padding: 1rem;
border-radius: 0.5rem;
margin-top: 0.5rem;
}
}
</style>
<!-- Font from Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Prompt:wght@300;400;500;600;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Main Navbar -->
<nav class="navbar navbar-expand-lg fixed-top main-navbar">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<i class="fas fa-laptop-code me-2"></i>
ระบบข้อสอบออนไลน์
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" href="#">
<i class="fas fa-tachometer-alt"></i>
ภาพรวม
</a>
</li>
<?php if ($show_special_certificate1_menu): ?>
<li class="nav-item">
<a class="nav-link" href="special_certificate.php?type=1">
<i class="fas fa-award"></i>
ดาวน์โหลดเกียรติบัตรทอง
</a>
</li>
<?php endif; ?>
<?php if ($show_special_certificate2_menu): ?>
<li class="nav-item">
<a class="nav-link" href="special_certificate.php?type=2">
<i class="fas fa-award"></i>
ดาวน์โหลดเกียรติบัตรเพชร
</a>
</li>
<?php endif; ?>
</ul>
<div class="user-dropdown dropdown">
<a href="#" class="dropdown-toggle" id="userDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<div>
<div class="fw-bold text-white"><?php echo htmlspecialchars($u_name); ?></div>
<div class="small" style="color: rgba(255, 255, 255, 0.7);">ผู้เข้าอบรม</div>
</div>
<i class="fas fa-chevron-down ms-2"></i>
</a>
<ul class="dropdown-menu dropdown-menu-end shadow">
<li><a class="dropdown-item" href="../logout.php"><i class="fas fa-sign-out-alt me-2"></i> ออกจากระบบ</a></li>
</ul>
</div>
</div>
</div>
</nav>
<!-- Main Content -->
<div class="container-fluid px-4 mt-4">
<!-- Welcome Banner -->
<div class="user-greeting d-flex justify-content-between align-items-center mb-4">
<div>
<h2>ยินดีต้อนรับ <?php echo htmlspecialchars($u_name); ?></h2>
<p class="mb-0">ดำเนินการสอบและรับเกียรติบัตรเมื่อสอบผ่าน</p>
</div>
<div class="text-center">
<div class="display-5 fw-bold"><?php echo $completion_percentage; ?>%</div>
<div>ความคืบหน้า</div>
</div>
</div>
<!-- Stats Cards -->
<div class="row mb-4">
<div class="col-xl-3 col-md-6">
<div class="card stat-card completed h-100">
<div class="card-body">
<div class="row align-items-center">
<div class="col">
<div class="text-xs fw-bold text-primary text-uppercase mb-1">สอบไปแล้ว</div>
<div class="h5 mb-0 fw-bold"><?php echo $completed_exams; ?> วิชา</div>
<div class="small text-secondary">จากทั้งหมด <?php echo $total_subjects; ?> วิชา</div>
</div>
<div class="col-auto">
<i class="fas fa-clipboard-list stat-icon text-primary"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card stat-card passed h-100">
<div class="card-body">
<div class="row align-items-center">
<div class="col">
<div class="text-xs fw-bold text-success text-uppercase mb-1">สอบผ่าน</div>
<div class="h5 mb-0 fw-bold"><?php echo $passed_exams; ?> วิชา</div>
<div class="small text-secondary">ได้รับเกียรติบัตรแล้ว</div>
</div>
<div class="col-auto">
<i class="fas fa-check-circle stat-icon text-success"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card stat-card failed h-100">
<div class="card-body">
<div class="row align-items-center">
<div class="col">
<div class="text-xs fw-bold text-danger text-uppercase mb-1">สอบไม่ผ่าน</div>
<div class="h5 mb-0 fw-bold"><?php echo $failed_exams; ?> วิชา</div>
<div class="small text-secondary">สามารถสอบใหม่ได้</div>
</div>
<div class="col-auto">
<i class="fas fa-times-circle stat-icon text-danger"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card stat-card pending h-100">
<div class="card-body">
<div class="row align-items-center">
<div class="col">
<div class="text-xs fw-bold text-warning text-uppercase mb-1">รอดำเนินการ</div>
<div class="h5 mb-0 fw-bold"><?php echo $pending_exams; ?> วิชา</div>
<div class="small text-secondary">ยังไม่ได้ทำการสอบ</div>
</div>
<div class="col-auto">
<i class="fas fa-hourglass-half stat-icon text-warning"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Progress Bar -->
<div class="card mb-4">
<div class="card-header d-flex justify-content-between align-items-center">
<h6 class="m-0 fw-bold">ความคืบหน้าการสอบ</h6>
</div>
<div class="card-body">
<div class="progress mb-2">
<div class="progress-bar bg-success" role="progressbar" style="width: <?php echo $passed_exams / $total_subjects * 100; ?>%" aria-valuenow="<?php echo $passed_exams; ?>" aria-valuemin="0" aria-valuemax="<?php echo $total_subjects; ?>"></div>
<div class="progress-bar bg-danger" role="progressbar" style="width: <?php echo $failed_exams / $total_subjects * 100; ?>%" aria-valuenow="<?php echo $failed_exams; ?>" aria-valuemin="0" aria-valuemax="<?php echo $total_subjects; ?>"></div>
</div>
<div class="d-flex justify-content-between small">
<div><span class="fw-bold text-success"><?php echo $passed_exams; ?></span> สอบผ่าน</div>
<div><span class="fw-bold text-danger"><?php echo $failed_exams; ?></span> สอบไม่ผ่าน</div>
<div><span class="fw-bold text-warning"><?php echo $pending_exams; ?></span> รอดำเนินการ</div>
</div>
</div>
</div>
<!-- Subjects Table -->
<div class="card mb-4">
<div class="card-header d-flex justify-content-between align-items-center">
<h6 class="m-0 fw-bold">วิชาทั้งหมดในระบบ</h6>
<div class="input-group input-group-sm" style="width: 250px;">
<input type="text" class="form-control" placeholder="ค้นหาวิชา..." id="subjectSearch">
<button class="btn btn-primary" type="button"><i class="fas fa-search"></i></button>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle" id="subjectsTable">
<thead class="table-light">
<tr>
<th width="5%" class="text-center">ที่</th>
<th width="25%">ชื่อวิชา</th>
<th width="10%" class="text-center">กลุ่ม</th>
<th width="10%" class="text-center">หลักสูตรปี</th>
<th width="15%" class="text-center">เกณฑ์ผ่าน</th>
<th width="10%" class="text-center">สถานะ</th>
<th width="10%" class="text-center">คะแนน</th>
<th width="15%" class="text-center">ดำเนินการ</th>
</tr>
</thead>
<tbody>
<?php $i = 1;
foreach ($subjects as $subject): ?>
<tr>
<td class="text-center"><?php echo $i++;; ?></td>
<td>
<div class="fw-bold"><?php echo htmlspecialchars($subject['name']); ?></div>
<?php if (!empty($subject['content_links'])): ?>
<ul class="content-links-list small">
<?php foreach ($subject['content_links'] as $link): ?>
<li>
<a href="<?php echo htmlspecialchars($link['link_url']); ?>" target="_blank">
<?php echo htmlspecialchars($link['link_title']); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</td>
<td>
<?php echo ($subject['group_name'] != null) ? htmlspecialchars($subject['group_name']) : 'ไม่ระบุกลุ่ม'; ?>
</td>
<td class="text-center"><?php echo $subject['curriculum_year']; ?></td>
<td class="text-center">
<span><?php echo $subject['pass_percentage']; ?>%</span>
</td>
<td class="text-center">
<?php if (isset($exam_results[$subject['id']])): ?>
<?php if ($exam_results[$subject['id']]['passed']): ?>
<span class="badge bg-success rounded-pill">สอบผ่านแล้ว</span>
<?php else: ?>
<span class="badge bg-danger rounded-pill">สอบไม่ผ่าน</span>
<?php endif; ?>
<?php else: ?>
<span class="badge bg-secondary rounded-pill">ยังไม่ได้สอบ</span>
<?php endif; ?>
</td>
<td class="text-center">
<?php if (isset($exam_results[$subject['id']])): ?>
<div class="fw-bold">
<?php echo $exam_results[$subject['id']]['score']; ?> คะแนน
</div>
<div class="small text-secondary">
(<?php echo $exam_results[$subject['id']]['percentage']; ?>%)
</div>
<?php else: ?>
<span class="fst-italic text-secondary">ยังไม่มีคะแนน</span>
<?php endif; ?>
</td>
<td class="text-center">
<?php if (!isset($exam_results[$subject['id']]) || !$exam_results[$subject['id']]['passed']): ?>
<a href="take_exam.php?exam=<?php echo base64_encode($subject['id']); ?>" class="btn btn-sm btn-primary">
<i class="fas fa-edit me-1"></i> เริ่มทำข้อสอบ
</a>
<?php else: ?>
<a href="certi.php?subject=<?php echo base64_encode($subject['id']); ?>" class="btn btn-sm btn-success" target="_blank">
<i class="fas fa-award me-1"></i> ดาวน์โหลดเกียรติบัตร
</a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<div class="card-footer small text-muted">
แสดงทั้งหมด <?php echo count($subjects); ?> วิชา | อัพเดทล่าสุด: <?php echo date("d/m/Y H:i"); ?>
</div>
</div>
</div>
<!-- Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
<!-- Custom JavaScript -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// ฟังก์ชันค้นหาวิชา
document.getElementById('subjectSearch').addEventListener('keyup', function() {
let searchText = this.value.toLowerCase();
let tableRows = document.querySelectorAll('#subjectsTable tbody tr');
tableRows.forEach(function(row) {
let subjectName = row.querySelectorAll('td')[1].textContent.toLowerCase();
if (subjectName.includes(searchText)) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
});
});
</script>
</body>
</html>