| 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';
// ป้องกันการเข้าถึง
if (!isset($_SESSION['user_id']) || $_SESSION['role'] != 'admin') {
header("Location: ../login.php");
exit();
}
$message = '';
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["school_file"])) {
if (isset($_FILES['school_file']) && $_FILES['school_file']['error'] == UPLOAD_ERR_OK) {
$file_tmp_path = $_FILES['school_file']['tmp_name'];
$file_ext = strtolower(pathinfo($_FILES['school_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());
$username = trim($sheet->getCell('B'.$row)->getValue());
$password = trim($sheet->getCell('C'.$row)->getValue());
if (empty($school_name) && empty($username)) continue;
if (empty($school_name) || empty($username) || empty($password)) {
$error_messages[] = "แถวที่ $row: ข้อมูล (ชื่อโรงเรียน, Username, Password) ไม่ครบถ้วน"; $error_count++; continue;
}
// ตรวจสอบข้อมูลซ้ำ
$check_school_res = mysqli_query($conn, "SELECT id FROM schools WHERE school_name = '".mysqli_real_escape_string($conn, $school_name)."'");
$check_user_res = mysqli_query($conn, "SELECT id FROM users WHERE username = '".mysqli_real_escape_string($conn, $username)."'");
if(mysqli_num_rows($check_school_res) > 0) {
$error_messages[] = "แถวที่ $row: ชื่อโรงเรียน '$school_name' มีอยู่ในระบบแล้ว"; $error_count++; continue;
}
if(mysqli_num_rows($check_user_res) > 0) {
$error_messages[] = "แถวที่ $row: Username '$username' มีอยู่ในระบบแล้ว"; $error_count++; continue;
}
// 1. เพิ่มโรงเรียน
$sql_school = "INSERT INTO schools (school_name) VALUES ('".mysqli_real_escape_string($conn, $school_name)."')";
if (mysqli_query($conn, $sql_school)) {
$school_id = mysqli_insert_id($conn);
// 2. เพิ่ม User
$sql_user = "INSERT INTO users (username, password, role, school_id) VALUES ('".mysqli_real_escape_string($conn, $username)."', '".mysqli_real_escape_string($conn, $password)."', 'school', $school_id)";
if (mysqli_query($conn, $sql_user)) {
$success_count++;
} else {
$error_messages[] = "แถวที่ $row: ไม่สามารถสร้าง User ได้"; $error_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_schools.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">
<ol>
<li>ดาวน์โหลดไฟล์แม่แบบ (Template) โดยคลิกที่ปุ่ม <a href="generate_school_template.php" class="btn btn-sm btn-success"><i class="bi bi-file-earmark-excel-fill me-1"></i>ดาวน์โหลด Template</a></li>
<li>เปิดไฟล์และกรอกข้อมูลให้ครบทั้ง 3 คอลัมน์: `School Name`, `Username`, `Password`</li>
<li><strong>สำคัญ:</strong> `School Name` และ `Username` ต้องไม่ซ้ำกับข้อมูลที่มีอยู่แล้วในระบบ</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_schools.php" method="post" enctype="multipart/form-data">
<div class="mb-3">
<label for="school_file" class="form-label">เลือกไฟล์ Excel ที่ต้องการนำเข้า:</label>
<input class="form-control" type="file" id="school_file" name="school_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'; ?>