403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : E:/Inetpub/www/school_budget/admin/manage_allocations.php
<?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'; ?>

Youez - 2016 - github.com/yon3zu
LinuXploit