| Server IP : 104.21.80.248 / 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/school_budget/admin/ |
Upload File : |
<?php
include '../template/header.php';
// ฟังก์ชันสำหรับแปลงวันที่เป็นรูปแบบไทย (แบบย่อ)
function thai_date_short_format($date_str) {
if (empty($date_str) || $date_str == '0000-00-00') return '';
$thai_short_months = [1=>'ม.ค.', 2=>'ก.พ.', 3=>'มี.ค.', 4=>'เม.ย.', 5=>'พ.ค.', 6=>'มิ.ย.', 7=>'ก.ค.', 8=>'ส.ค.', 9=>'ก.ย.', 10=>'ต.ค.', 11=>'พ.ย.', 12=>'ธ.ค.'];
$timestamp = strtotime($date_str);
$day = date('j', $timestamp);
$month = $thai_short_months[date('n', $timestamp)];
$year = substr(date('Y', $timestamp) + 543, -2);
return "$day $month $year";
}
// ป้องกันการเข้าถึงหากไม่ใช่สิทธิ์ผู้ดูแลระบบ
if (!isset($_SESSION['user_id']) || $_SESSION['role'] != 'admin') {
header("Location: ../login.php");
exit();
}
// --- ตัวแปรสำหรับโหมดแก้ไขข้อมูล ---
$edit_mode = false;
$edit_id = 0;
$edit_data = [
'school_id' => '', 'budget_type_id' => '', 'plan_id' => '',
'budget_year' => (date('Y') + 543), 'item_name' => '', 'amount' => '', 'allocation_date' => date('Y-m-d')
];
// ดึงข้อมูลกรณีเปิดโหมดแก้ไข (GET edit)
if (isset($_GET['edit'])) {
$edit_mode = true;
$edit_id = (int)$_GET['edit'];
$edit_res = mysqli_query($conn, "SELECT * FROM allocations WHERE id = $edit_id");
if ($edit_res && mysqli_num_rows($edit_res) > 0) {
$edit_data = mysqli_fetch_assoc($edit_res);
}
}
// --- จัดการการเพิ่ม/แก้ไขข้อมูล (POST Action) ---
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['school_id'])) {
$school_id = mysqli_real_escape_string($conn, $_POST['school_id']);
$budget_type_id = mysqli_real_escape_string($conn, $_POST['budget_type_id']);
$plan_id = mysqli_real_escape_string($conn, $_POST['plan_id']);
$budget_year = mysqli_real_escape_string($conn, $_POST['budget_year']);
$item_name = mysqli_real_escape_string($conn, $_POST['item_name']);
$amount = mysqli_real_escape_string($conn, $_POST['amount']);
$allocation_date = mysqli_real_escape_string($conn, $_POST['allocation_date']);
if (isset($_POST['action_update']) && $_POST['action_update'] == '1') {
// ทำการแก้ไขข้อมูล (Update)
$id = (int)$_POST['allocation_id'];
$sql_update = "UPDATE allocations SET school_id='$school_id', budget_type_id='$budget_type_id', plan_id='$plan_id', budget_year='$budget_year', item_name='$item_name', amount='$amount', allocation_date='$allocation_date' WHERE id=$id";
if (mysqli_query($conn, $sql_update)) {
echo "<script>alert('ปรับปรุงข้อมูลการจัดสรรงบประมาณสำเร็จ'); window.location.href='manage_allocations.php';</script>";
} else {
echo "<script>alert('เกิดข้อผิดพลาดในการอัปเดตข้อมูล');</script>";
}
} else {
// ทำการเพิ่มข้อมูลใหม่ (Insert)
$sql_insert = "INSERT INTO allocations (school_id, budget_type_id, plan_id, budget_year, item_name, amount, allocation_date) VALUES ('$school_id', '$budget_type_id', '$plan_id', '$budget_year', '$item_name', '$amount', '$allocation_date')";
if (mysqli_query($conn, $sql_insert)) {
echo "<script>alert('บันทึกข้อมูลการจัดสรรงบประมาณสำเร็จ'); window.location.href='manage_allocations.php';</script>";
} else {
echo "<script>alert('เกิดข้อผิดพลาดในการบันทึกข้อมูล');</script>";
}
}
}
// --- จัดการการลบข้อมูล (GET delete) ---
if (isset($_GET['delete'])) {
$delete_id = mysqli_real_escape_string($conn, $_GET['delete']);
$check_sql = "SELECT COUNT(*) as count FROM disbursements WHERE allocation_id = '$delete_id'";
$check_res = mysqli_query($conn, $check_sql);
$check_row = mysqli_fetch_assoc($check_res);
if ($check_row['count'] > 0) {
echo "<script>alert('ไม่สามารถลบได้ เนื่องจากรายการจัดสรรนี้มีการบันทึกการเบิกจ่ายแล้ว'); window.location.href='manage_allocations.php';</script>";
} else {
$sql_delete = "DELETE FROM allocations WHERE id = '$delete_id'";
if (mysqli_query($conn, $sql_delete)) {
echo "<script>alert('ลบข้อมูลสำเร็จ'); window.location.href='manage_allocations.php';</script>";
} else {
echo "<script>alert('เกิดข้อผิดพลาดในการลบข้อมูล');</script>";
}
}
}
// --- การตั้งค่าสำหรับ Pagination ---
$limit = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $limit;
// --- การจัดการ Filter ---
$filter_school_id = isset($_GET['school_id']) ? mysqli_real_escape_string($conn, $_GET['school_id']) : '';
$filter_budget_year = isset($_GET['budget_year']) ? mysqli_real_escape_string($conn, $_GET['budget_year']) : '';
$filter_type_id = isset($_GET['type_id']) ? mysqli_real_escape_string($conn, $_GET['type_id']) : '';
$where_clauses = [];
if (!empty($filter_school_id)) $where_clauses[] = "a.school_id = '$filter_school_id'";
if (!empty($filter_budget_year)) $where_clauses[] = "a.budget_year = '$filter_budget_year'";
if (!empty($filter_type_id)) $where_clauses[] = "a.budget_type_id = '$filter_type_id'";
$where_sql = count($where_clauses) > 0 ? 'WHERE ' . implode(' AND ', $where_clauses) : '';
// นับรายการทั้งหมด
$total_rows_query = "SELECT COUNT(*) as total FROM allocations a $where_sql";
$total_result = mysqli_query($conn, $total_rows_query);
$total_rows = mysqli_fetch_assoc($total_result)['total'];
$total_pages = ceil($total_rows / $limit);
// Query ดึงข้อมูลมาแสดงผลในตาราง
$sql_list = "SELECT a.*, s.school_name, bt.type_name, p.plan_name FROM allocations a JOIN schools s ON a.school_id = s.id JOIN budget_types bt ON a.budget_type_id = bt.id JOIN plans p ON a.plan_id = p.id $where_sql ORDER BY a.id DESC LIMIT $limit OFFSET $offset";
$result_list = mysqli_query($conn, $sql_list);
?>
<div class="row">
<div class="col-md-4">
<div class="card mb-4 shadow-sm">
<div class="card-header <?php echo $edit_mode ? 'bg-warning text-dark' : 'bg-primary text-white'; ?> fw-bold">
<i class="bi <?php echo $edit_mode ? 'bi-pencil-square' : 'bi-plus-circle'; ?>"></i>
<?php echo $edit_mode ? 'แก้ไขข้อมูลจัดสรรงบประมาณ' : 'เพิ่มข้อมูลจัดสรรงบประมาณ'; ?>
</div>
<div class="card-body">
<form method="post" action="">
<?php if ($edit_mode): ?>
<input type="hidden" name="action_update" value="1">
<input type="hidden" name="allocation_id" value="<?php echo $edit_id; ?>">
<?php endif; ?>
<div class="mb-3">
<label for="school_id" class="form-label font-monospace fw-bold small">โรงเรียน</label>
<select name="school_id" id="school_id" class="form-select" required>
<option value="">-- เลือกโรงเรียน --</option>
<?php
$s_res = mysqli_query($conn, "SELECT id, school_name FROM schools ORDER BY school_name");
while($s = mysqli_fetch_assoc($s_res)) {
$selected = ($edit_data['school_id'] == $s['id']) ? 'selected' : '';
echo "<option value='{$s['id']}' $selected>".htmlspecialchars($s['school_name'])."</option>";
}
?>
</select>
</div>
<div class="mb-3">
<label for="budget_year" class="form-label fw-bold small">ปีงบประมาณ (พ.ศ.)</label>
<select name="budget_year" id="budget_year" class="form-select" required>
<?php
$current_year = date('Y') + 543;
for($y = $current_year + 1; $y >= $current_year - 3; $y--) {
$selected = ($edit_data['budget_year'] == $y) ? 'selected' : '';
echo "<option value='$y' $selected>$y</option>";
}
?>
</select>
</div>
<div class="mb-3">
<label for="budget_type_id" class="form-label fw-bold small">ประเภทงบประมาณ</label>
<select name="budget_type_id" id="budget_type_id" class="form-select" required>
<option value="">-- เลือกประเภทงบ --</option>
<?php
$b_res = mysqli_query($conn, "SELECT id, type_name FROM budget_types ORDER BY type_name");
while($b = mysqli_fetch_assoc($b_res)) {
$selected = ($edit_data['budget_type_id'] == $b['id']) ? 'selected' : '';
echo "<option value='{$b['id']}' $selected>".htmlspecialchars($b['type_name'])."</option>";
}
?>
</select>
</div>
<div class="mb-3">
<label for="plan_id" class="form-label fw-bold small">แผนงาน</label>
<select name="plan_id" id="plan_id" class="form-select" required>
<option value="">-- เลือกแผนงาน --</option>
<?php
$p_res = mysqli_query($conn, "SELECT id, plan_name FROM plans ORDER BY plan_name");
while($p = mysqli_fetch_assoc($p_res)) {
$selected = ($edit_data['plan_id'] == $p['id']) ? 'selected' : '';
echo "<option value='{$p['id']}' $selected>".htmlspecialchars($p['plan_name'])."</option>";
}
?>
</select>
</div>
<div class="mb-3">
<label for="item_name" class="form-label fw-bold small">ชื่อรายการ/โครงการ</label>
<input type="text" name="item_name" id="item_name" class="form-control" placeholder="เช่น ค่าวัสดุการศึกษาประจำปี" value="<?php echo htmlspecialchars($edit_data['item_name']); ?>" required>
</div>
<div class="mb-3">
<label for="amount" class="form-label fw-bold small">จำนวนเงิน (บาท)</label>
<input type="number" step="0.01" name="amount" id="amount" class="form-control" placeholder="0.00" value="<?php echo htmlspecialchars($edit_data['amount']); ?>" required>
</div>
<div class="mb-3">
<label for="allocation_date" class="form-label fw-bold small">วันที่จัดสรร</label>
<input type="date" name="allocation_date" id="allocation_date" class="form-control" value="<?php echo htmlspecialchars($edit_data['allocation_date']); ?>" required>
</div>
<div class="text-end">
<?php if ($edit_mode): ?>
<a href="manage_allocations.php" class="btn btn-secondary"><i class="bi bi-x-circle"></i> ยกเลิก</a>
<button type="submit" class="btn btn-warning fw-bold text-dark"><i class="bi bi-check-circle"></i> อัปเดตข้อมูล</button>
<?php else: ?>
<button type="submit" class="btn btn-success"><i class="bi bi-save"></i> บันทึกข้อมูล</button>
<?php endif; ?>
</div>
</form>
</div>
</div>
<?php if (!$edit_mode): ?>
<div class="card mb-4 shadow-sm border-success">
<div class="card-header bg-success text-white fw-bold">
<i class="bi bi-file-earmark-excel"></i> นำเข้าข้อมูลด้วยระบบ Excel
</div>
<div class="card-body bg-light-subtle d-grid gap-2">
<p class="text-muted small mb-1">คุณสามารถนำเข้าข้อมูลงบประมาณผ่านไฟล์ Excel (.xls, .xlsx) โดยกดที่ปุ่มลิงก์ด้านล่างเพื่อดาวน์โหลดแบบฟอร์มต้นแบบและเข้าสู่หน้าต่างอัปโหลด</p>
<a href="import_allocations.php" class="btn btn-success fw-bold"><i class="bi bi-cloud-arrow-up-fill me-1"></i> ไปที่หน้านำเข้าข้อมูล Excel</a>
</div>
</div>
<?php endif; ?>
</div>
<div class="col-md-8">
<div class="card shadow-sm">
<div class="card-header bg-secondary text-white d-flex justify-content-between align-items-center">
<span><i class="bi bi-list-task"></i> รายการจัดสรรงบประมาณทั้งหมด</span>
<span class="badge bg-light text-dark">รวม <?php echo $total_rows; ?> รายการ</span>
</div>
<div class="card-body">
<form method="get" action="manage_allocations.php" class="row g-2 mb-3">
<div class="col-sm-4">
<select name="school_id" class="form-select form-select-sm" onchange="this.form.submit()">
<option value="">-- แสดงทุกโรงเรียน --</option>
<?php
$sf_res = mysqli_query($conn, "SELECT id, school_name FROM schools ORDER BY school_name");
while($sf = mysqli_fetch_assoc($sf_res)) {
$sel = ($filter_school_id == $sf['id']) ? 'selected' : '';
echo "<option value='{$sf['id']}' $sel>".htmlspecialchars($sf['school_name'])."</option>";
}
?>
</select>
</div>
<div class="col-sm-4">
<select name="type_id" class="form-select form-select-sm" onchange="this.form.submit()">
<option value="">-- ทุกประเภทงบประมาณ --</option>
<?php
$bt_res = mysqli_query($conn, "SELECT id, type_name FROM budget_types ORDER BY type_name ASC");
while($bt = mysqli_fetch_assoc($bt_res)) {
$sel = ($filter_type_id == $bt['id']) ? 'selected' : '';
echo "<option value='{$bt['id']}' $sel>".htmlspecialchars($bt['type_name'])."</option>";
}
?>
</select>
</div>
<div class="col-sm-3">
<select name="budget_year" class="form-select form-select-sm" onchange="this.form.submit()">
<option value="">-- ทุกปีงบประมาณ --</option>
<?php
$year_res = mysqli_query($conn, "SELECT DISTINCT budget_year FROM allocations ORDER BY budget_year DESC");
while($yr = mysqli_fetch_assoc($year_res)) {
$sel = ($filter_budget_year == $yr['budget_year']) ? 'selected' : '';
echo "<option value='{$yr['budget_year']}' $sel>ปีงบ พ.ศ. {$yr['budget_year']}</option>";
}
?>
</select>
</div>
<div class="col-sm-1 d-grid">
<a href="manage_allocations.php" class="btn btn-sm btn-secondary" title="ล้างค่าการกรอง"><i class="bi bi-arrow-clockwise"></i></a>
</div>
</form>
<div class="table-responsive">
<table class="table table-striped table-hover align-middle" style="font-size: 0.95rem;">
<thead class="table-dark">
<tr>
<th style="width: 12%;">วันที่</th>
<th style="width: 23%;">โรงเรียน</th>
<th>รายละเอียดโครงการ / งบประมาณ / แผนงาน</th>
<th class="text-end" style="width: 18%;">จำนวนเงิน (บาท)</th>
<th class="text-center" style="width: 15%;">จัดการ</th>
</tr>
</thead>
<tbody>
<?php if (mysqli_num_rows($result_list) > 0): while($row = mysqli_fetch_assoc($result_list)): ?>
<tr>
<td><?php echo thai_date_short_format($row['allocation_date']); ?></td>
<td><strong><?php echo htmlspecialchars($row['school_name']); ?></strong></td>
<td>
<div class="fw-bold text-primary">
<?php echo htmlspecialchars($row['item_name']); ?>
<span class="badge bg-secondary" style="font-size:0.75rem;">ปี <?php echo $row['budget_year']; ?></span>
</div>
<div class="text-muted small" style="font-size: 0.825rem;">
<i class="bi bi-tag-fill me-1"></i><?php echo htmlspecialchars($row['type_name']); ?>
<span class="mx-1">|</span>
<i class="bi bi-folder-fill me-1"></i><?php echo htmlspecialchars($row['plan_name']); ?>
</div>
</td>
<td class="text-end fw-bold text-success"><?php echo number_format($row['amount'], 2); ?></td>
<td class="text-center">
<?php
$url_params = $_GET;
$url_params['edit'] = $row['id'];
$edit_url = "manage_allocations.php?" . http_build_query($url_params);
unset($url_params['edit']);
$url_params['delete'] = $row['id'];
$delete_url = "manage_allocations.php?" . http_build_query($url_params);
?>
<a href="<?php echo $edit_url; ?>" class="btn btn-sm btn-warning text-dark me-1" title="แก้ไขข้อมูล"><i class="bi bi-pencil-square"></i></a>
<a href="<?php echo $delete_url; ?>" class="btn btn-sm btn-danger" onclick="return confirm('คุณแน่ใจหรือไม่ว่าต้องการลบรายการจัดสรรนี้? \n*ระบบจะไม่อนุญาตให้ลบหากรายการนี้เริ่มมีการเบิกจ่ายแล้ว');" title="ลบข้อมูล"><i class="bi bi-trash"></i></a>
</td>
</tr>
<?php endwhile; else: ?>
<tr><td colspan="5" class="text-center text-muted py-3">ไม่พบข้อมูลตามเงื่อนไขที่กำหนด</td></tr>
<?php endif; ?>
</tbody>
</table>
</div>
<?php if ($total_pages > 1): ?>
<nav>
<ul class="pagination justify-content-center mt-3">
<?php
$query_params = $_GET;
unset($query_params['page']);
$query_string = http_build_query($query_params);
$prev_page = $page - 1;
echo '<li class="page-item ' . ($page <= 1 ? 'disabled' : '') . '"><a class="page-link" href="?' . $query_string . '&page=' . $prev_page . '">ก่อนหน้า</a></li>';
$adjacents = 2;
if ($total_pages <= 7) {
for ($i = 1; $i <= $total_pages; $i++) {
echo '<li class="page-item ' . ($page == $i ? 'active' : '') . '"><a class="page-link" href="?' . $query_string . '&page=' . $i . '">' . $i . '</a></li>';
}
} else {
if ($page < 2 + ($adjacents * 2)) {
for ($i = 1; $i < 4 + ($adjacents * 2); $i++) {
echo '<li class="page-item ' . ($page == $i ? 'active' : '') . '"><a class="page-link" href="?' . $query_string . '&page=' . $i . '">' . $i . '</a></li>';
}
echo '<li class="page-item disabled"><span class="page-link">...</span></li>';
echo '<li class="page-item"><a class="page-link" href="?' . $query_string . '&page=' . $total_pages . '">' . $total_pages . '</a></li>';
} elseif ($total_pages - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
echo '<li class="page-item"><a class="page-link" href="?' . $query_string . '&page=1">1</a></li>';
echo '<li class="page-item disabled"><span class="page-link">...</span></li>';
for ($i = $page - $adjacents; $i <= $page + $adjacents; $i++) {
echo '<li class="page-item ' . ($page == $i ? 'active' : '') . '"><a class="page-link" href="?' . $query_string . '&page=' . $i . '">' . $i . '</a></li>';
}
echo '<li class="page-item disabled"><span class="page-link">...</span></li>';
echo '<li class="page-item"><a class="page-link" href="?' . $query_string . '&page=' . $total_pages . '">' . $total_pages . '</a></li>';
} else {
echo '<li class="page-item"><a class="page-link" href="?' . $query_string . '&page=1">1</a></li>';
echo '<li class="page-item disabled"><span class="page-link">...</span></li>';
for ($i = $total_pages - (2 + ($adjacents * 2)); $i <= $total_pages; $i++) {
echo '<li class="page-item ' . ($page == $i ? 'active' : '') . '"><a class="page-link" href="?' . $query_string . '&page=' . $i . '">' . $i . '</a></li>';
}
}
}
$next_page = $page + 1;
echo '<li class="page-item ' . ($page >= $total_pages ? 'disabled' : '') . '"><a class="page-link" href="?' . $query_string . '&page=' . $next_page . '">ถัดไป</a></li>';
?>
</ul>
</nav>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php include '../template/footer.php'; ?>