| Server IP : 172.67.187.206 / Your IP : 172.71.28.156 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/education/ |
Upload File : |
<?php
require_once 'config.php';
check_login();
if($_SESSION['user_type'] != 'school') {
header("Location: dashboard.php");
exit();
}
$page_title = "เพิ่มข้อมูล - ระบบจัดการข้อมูลการเรียนต่อ สพม.ราชบุรี";
$success_message = "";
$error_message = "";
$current_year = get_current_academic_year();
$user_id = $_SESSION['user_id']; // Get user_id once
// --- Retrieve existing work count for current academic year ---
$existing_work_count = 0; // Default to 0 if no data exists
$sql_check_work = "SELECT student_count FROM student_work WHERE user_id = $user_id AND academic_year = '$current_year'";
$result_check_work = mysqli_query($conn, $sql_check_work);
if ($result_check_work && mysqli_num_rows($result_check_work) > 0) {
$row_work = mysqli_fetch_assoc($result_check_work);
$existing_work_count = $row_work['student_count'];
}
// -----------------------------------------------------------
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$data_type = secure_input($_POST['data_type']);
if($data_type == 'work') {
$student_count = secure_input($_POST['student_count']);
if(!empty($student_count) && is_numeric($student_count) && $student_count >= 0) { // Allow 0 to clear data if needed
// Check if data for current year already exists for this user
$sql_check_existing = "SELECT id FROM student_work WHERE user_id = $user_id AND academic_year = '$current_year'";
$result_existing = mysqli_query($conn, $sql_check_existing);
if ($result_existing && mysqli_num_rows($result_existing) > 0) { // Data exists, update it
$work_id = mysqli_fetch_assoc($result_existing)['id'];
$sql = "UPDATE student_work SET student_count = $student_count WHERE id = $work_id";
} else { // No data exists, insert new
$sql = "INSERT INTO student_work (user_id, student_count, academic_year)
VALUES ($user_id, $student_count, '$current_year')";
}
if(mysqli_query($conn, $sql)) {
$success_message = "บันทึกข้อมูลการประกอบอาชีพเรียบร้อยแล้ว";
$existing_work_count = $student_count; // Update the displayed value immediately
} else {
$error_message = "เกิดข้อผิดพลาดในการบันทึกข้อมูล: " . mysqli_error($conn);
}
} else {
$error_message = "กรุณากรอกจำนวนนักเรียนที่ถูกต้อง (ต้องเป็นตัวเลขและไม่ติดลบ)";
}
} else if($data_type == 'continue') {
// Handle uni_id, faculty_id, field_id - add if not exists
$uni_name = secure_input($_POST['uni_name_input']);
$faculty_name = secure_input($_POST['faculty_name_input']);
$field_name = secure_input($_POST['field_name_input']);
$student_count = secure_input($_POST['student_count']);
$uni_id = get_or_create_id($conn, 'uni_name', $uni_name);
$faculty_id = get_or_create_id($conn, 'faculty_name', $faculty_name);
$field_id = get_or_create_id($conn, 'field_name', $field_name);
if($uni_id && $faculty_id && $field_id &&
!empty($student_count) && is_numeric($student_count) && $student_count > 0) {
$sql = "INSERT INTO student_continue_study (user_id, uni_id, faculty_id, field_id, student_count, academic_year)
VALUES ($user_id, $uni_id, $faculty_id, $field_id, $student_count, '$current_year')";
if(mysqli_query($conn, $sql)) {
$success_message = "บันทึกข้อมูลการเรียนต่อเรียบร้อยแล้ว";
} else {
$error_message = "เกิดข้อผิดพลาดในการบันทึกข้อมูล: " . mysqli_error($conn);
}
} else {
$error_message = "กรุณากรอกข้อมูลให้ครบถ้วนและถูกต้อง";
}
}
}
// Function to get ID from name, or create new entry and return ID
function get_or_create_id($conn, $table_name, $name) {
$sql = "SELECT id FROM $table_name WHERE name = '$name'";
$result = mysqli_query($conn, $sql);
if($row = mysqli_fetch_assoc($result)) {
return $row['id'];
} else {
$sql_insert = "INSERT INTO $table_name (name) VALUES ('$name')";
if(mysqli_query($conn, $sql_insert)) {
return mysqli_insert_id($conn);
} else {
return false;
}
}
}
// ดึงข้อมูลสำหรับ dropdown (initial load, not used for AJAX search)
// We will now rely on AJAX for dynamic loading, but keep these queries for initial display if needed for validation or pre-population
$unis = mysqli_query($conn, "SELECT * FROM uni_name ORDER BY name");
$faculties = mysqli_query($conn, "SELECT * FROM faculty_name ORDER BY name");
$fields = mysqli_query($conn, "SELECT * FROM field_name ORDER BY name");
include 'template/header.php';
?>
<div class="container-fluid main-content">
<div class="row">
<div class="col-md-3 col-lg-2 px-0">
<div class="sidebar">
<div class="p-3">
<h6 class="text-muted fw-bold mb-3">เมนูหลัก</h6>
<nav class="nav flex-column">
<a class="nav-link" href="dashboard.php">
<i class="bi bi-house me-2"></i>หน้าหลัก
</a>
<a class="nav-link active" href="add_data.php">
<i class="bi bi-plus-circle me-2"></i>เพิ่มข้อมูล
</a>
<a class="nav-link" href="view_data.php?type=<?php echo encode_url('continue'); ?>">
<i class="bi bi-mortarboard me-2"></i>ข้อมูลการเรียนต่อ
</a>
<a class="nav-link" href="view_data.php?type=<?php echo encode_url('work'); ?>">
<i class="bi bi-briefcase me-2"></i>ข้อมูลการประกอบอาชีพ
</a>
</nav>
</div>
</div>
</div>
<div class="col-md-9 col-lg-10">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<h2 class="text-white mb-4">
<i class="bi bi-plus-circle me-2"></i>
เพิ่มข้อมูล
</h2>
</div>
</div>
<?php if($success_message): ?>
<div class="alert alert-success">
<i class="bi bi-check-circle me-2"></i>
<?php echo $success_message; ?>
</div>
<?php endif; ?>
<?php if($error_message): ?>
<div class="alert alert-danger">
<i class="bi bi-exclamation-triangle me-2"></i>
<?php echo $error_message; ?>
</div>
<?php endif; ?>
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="bi bi-list me-2"></i>
เลือกประเภทข้อมูล
</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6 mb-3">
<button type="button" class="btn btn-outline-primary w-100 py-4" onclick="showForm('continue')">
<i class="bi bi-mortarboard me-2" style="font-size: 2rem;"></i><br>
<strong>เพิ่มข้อมูลการเรียนต่อ</strong><br>
<small>บันทึกข้อมูลนักเรียนที่เรียนต่อในระดับอุดมศึกษา</small>
</button>
</div>
<div class="col-md-6 mb-3">
<button type="button" class="btn btn-outline-success w-100 py-4" onclick="showForm('work')">
<i class="bi bi-briefcase me-2" style="font-size: 2rem;"></i><br>
<strong>เพิ่มข้อมูลการประกอบอาชีพ</strong><br>
<small>บันทึกข้อมูลนักเรียนที่ประกอบอาชีพ</small>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="continueForm" class="row" style="display: none;">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="bi bi-mortarboard me-2"></i>
เพิ่มข้อมูลการเรียนต่อ
</h5>
</div>
<div class="card-body">
<form method="POST" id="continueStudyForm">
<input type="hidden" name="data_type" value="continue">
<div class="row">
<div class="col-md-6 mb-3">
<label for="uni_name_input" class="form-label">มหาวิทยาลัย/สถาบัน</label>
<input type="text" class="form-control" id="uni_name_input" name="uni_name_input" placeholder="พิมพ์ชื่อมหาวิทยาลัยเพื่อค้นหาหรือเพิ่มใหม่" required>
<div id="uni_name_suggestions" class="list-group position-absolute" style="z-index: 1000;"></div>
</div>
<div class="col-md-6 mb-3">
<label for="faculty_name_input" class="form-label">คณะ</label>
<input type="text" class="form-control" id="faculty_name_input" name="faculty_name_input" placeholder="พิมพ์ชื่อคณะเพื่อค้นหาหรือเพิ่มใหม่" required>
<div id="faculty_name_suggestions" class="list-group position-absolute" style="z-index: 1000;"></div>
</div>
</div>
<div class="row">
<div class="col-md-8 mb-3">
<label for="field_name_input" class="form-label">สาขาวิชา</label>
<input type="text" class="form-control" id="field_name_input" name="field_name_input" placeholder="พิมพ์ชื่อสาขาวิชาเพื่อค้นหาหรือเพิ่มใหม่" required>
<div id="field_name_suggestions" class="list-group position-absolute" style="z-index: 1000;"></div>
</div>
<div class="col-md-4 mb-3">
<label for="student_count_continue" class="form-label">จำนวนนักเรียน (คน)</label>
<input type="number" class="form-control" id="student_count_continue" name="student_count" min="1" required>
</div>
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary">
<i class="bi bi-save me-2"></i>บันทึกข้อมูล
</button>
<button type="button" class="btn btn-secondary" onclick="hideForm()">
<i class="bi bi-x-circle me-2"></i>ยกเลิก
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<div id="workForm" class="row" style="display: none;">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="bi bi-briefcase me-2"></i>
เพิ่มข้อมูลการประกอบอาชีพ
</h5>
</div>
<div class="card-body">
<form method="POST" id="workStudentForm">
<input type="hidden" name="data_type" value="work">
<div class="row">
<div class="col-md-6 mb-3">
<label for="student_count_work" class="form-label">จำนวนนักเรียนที่ประกอบอาชีพ (คน)</label>
<input type="number" class="form-control" id="student_count_work" name="student_count" min="0" required value="<?php echo $existing_work_count; ?>">
</div>
</div>
<div class="alert alert-info">
<i class="bi bi-info-circle me-2"></i>
ข้อมูลนี้จะบันทึกเป็นจำนวนนักเรียนที่ประกอบอาชีพในปีการศึกษา <?php echo $current_year; ?>
</div>
<div class="d-flex gap-2">
<button type="submit" class="btn btn-success">
<i class="bi bi-save me-2"></i>บันทึก/แก้ไขข้อมูล
</button>
<button type="button" class="btn btn-secondary" onclick="hideForm()">
<i class="bi bi-x-circle me-2"></i>ยกเลิก
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function showForm(type) {
hideForm();
if(type === 'continue') {
document.getElementById('continueForm').style.display = 'block';
} else if(type === 'work') {
document.getElementById('workForm').style.display = 'block';
}
// Smooth scroll to form
setTimeout(() => {
document.querySelector('#' + type + 'Form').scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}, 100);
}
function hideForm() {
document.getElementById('continueForm').style.display = 'none';
document.getElementById('workForm').style.display = 'none';
}
// Form validation (you might want to enhance this with more specific validation)
document.addEventListener('DOMContentLoaded', function() {
const forms = document.querySelectorAll('form');
forms.forEach(form => {
form.addEventListener('submit', function(e) {
// No specific client-side validation added here for dropdowns,
// as new values can be added. Server-side validation is crucial.
// You can add basic validation like checking if student_count is valid.
const formId = this.id;
if (formId === 'continueStudyForm' || formId === 'workStudentForm') { // Changed workForm to workStudentForm
const studentCountInput = this.querySelector('input[name="student_count"]');
if (studentCountInput && (studentCountInput.value === '' || parseInt(studentCountInput.value) < 0)) { // Changed <=0 to <0 to allow 0
e.preventDefault();
alert("กรุณากรอกจำนวนนักเรียนที่ถูกต้องและไม่ติดลบ");
}
}
});
});
// Autocomplete functionality
function setupAutocomplete(inputId, suggestionsId, tableName) {
const input = document.getElementById(inputId);
const suggestionsDiv = document.getElementById(suggestionsId);
input.addEventListener('input', function() {
const query = this.value;
if (query.length < 2) { // Start searching after 2 characters
suggestionsDiv.innerHTML = '';
return;
}
fetch('fetch_suggestions.php?table=' + tableName + '&query=' + query)
.then(response => response.json())
.then(data => {
suggestionsDiv.innerHTML = '';
if (data.length > 0) {
data.forEach(item => {
const suggestionItem = document.createElement('a');
suggestionItem.href = '#';
suggestionItem.classList.add('list-group-item', 'list-group-item-action');
suggestionItem.textContent = item.name;
suggestionItem.addEventListener('click', function(e) {
e.preventDefault();
input.value = item.name;
suggestionsDiv.innerHTML = '';
});
suggestionsDiv.appendChild(suggestionItem);
});
} else {
// Optional: Display a message if no suggestions found
// const noResult = document.createElement('div');
// noResult.classList.add('list-group-item');
// noResult.textContent = 'ไม่พบข้อมูล. จะถูกเพิ่มเป็นข้อมูลใหม่.';
// suggestionsDiv.appendChild(noResult);
}
})
.catch(error => console.error('Error fetching suggestions:', error));
});
// Hide suggestions when clicking outside
document.addEventListener('click', function(e) {
if (!input.contains(e.target) && !suggestionsDiv.contains(e.target)) {
suggestionsDiv.innerHTML = '';
}
});
}
setupAutocomplete('uni_name_input', 'uni_name_suggestions', 'uni_name');
setupAutocomplete('faculty_name_input', 'faculty_name_suggestions', 'faculty_name');
setupAutocomplete('field_name_input', 'field_name_suggestions', 'field_name');
});
</script>
<?php include 'template/footer.php'; ?>