setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec("SET NAMES $charset"); } catch (PDOException $e) { die("DB Error: " . $e->getMessage()); } // -------------------- AJAX Requests -------------------- if (isset($_GET['action'])) { header('Content-Type: application/json'); try { if ($_GET['action'] == 'get_provinces') { $stmt = $pdo->query("SELECT schoolID, firstname FROM school WHERE user_type_id = 1"); echo json_encode(array('status' => 'success', 'data' => $stmt->fetchAll(PDO::FETCH_ASSOC))); } elseif ($_GET['action'] == 'get_amphurs' && isset($_GET['province_id'])) { $stmt = $pdo->prepare("SELECT schoolID, firstname FROM school WHERE leader = ? AND user_type_id = 2"); $stmt->execute(array($_GET['province_id'])); echo json_encode(array('status' => 'success', 'data' => $stmt->fetchAll(PDO::FETCH_ASSOC))); } elseif ($_GET['action'] == 'get_tambons' && isset($_GET['amp_id'])) { $stmt = $pdo->prepare("SELECT schoolID, firstname FROM school WHERE leader = ? AND user_type_id = 4"); $stmt->execute(array($_GET['amp_id'])); echo json_encode(array('status' => 'success', 'data' => $stmt->fetchAll(PDO::FETCH_ASSOC))); } else { echo json_encode(array('status' => 'error', 'message' => 'Invalid request')); } } catch (PDOException $e) { echo json_encode(array('status' => 'error', 'message' => $e->getMessage())); } exit; } // -------------------- Form Submit -------------------- if ($_SERVER['REQUEST_METHOD'] === 'POST') { $prefixID = trim($_POST['prefixID']); // ถ้าเลือก "อื่น ๆ" ให้ใช้ custom prefix if ($prefixID === 'other') { $prefixID = trim($_POST['customPrefix']); } $firstName = trim($_POST['firstName']); $lastName = trim($_POST['lastName']); $position = trim($_POST['position']); $username = trim($_POST['username']); $password = trim($_POST['password']); $confirm = trim($_POST['confirm_password']); $province = isset($_POST['province_id']) ? trim($_POST['province_id']) : ''; $amp = trim($_POST['amp_id']); $tambon = trim($_POST['tambon_id']); $mobile = trim($_POST['mobile']); header('Content-Type: application/json'); // -------------------- Validation -------------------- if ($firstName == "" || $lastName == "" || $username == "" || $password == "" || $confirm == "") { echo json_encode(array("status" => "error", "message" => "กรุณากรอกข้อมูลให้ครบถ้วน")); exit; } if (empty($amp) || empty($tambon)) { echo json_encode(array("status" => "error", "message" => "กรุณาเลือกสกร.ระดับอำเภอและศกร.ระดับตำบล")); exit; } if (!filter_var($username, FILTER_VALIDATE_EMAIL)) { echo json_encode(array("status" => "error", "message" => "รูปแบบอีเมลไม่ถูกต้อง")); exit; } if ($password !== $confirm) { echo json_encode(array("status" => "error", "message" => "รหัสผ่านไม่ตรงกัน")); exit; } $stmt = $pdo->prepare("SELECT id FROM users WHERE username = ?"); $stmt->execute(array($username)); if ($stmt->fetch()) { echo json_encode(array("status" => "error", "message" => "อีเมลนี้ถูกใช้งานแล้ว")); exit; } $password_md5 = md5($password); try { // ดึงข้อมูล geo, amphur, province จากตาราง school $stmtSchool = $pdo->prepare("SELECT geo, amphur, province FROM school WHERE schoolID = ? LIMIT 1"); $stmtSchool->execute(array($tambon)); $schoolData = $stmtSchool->fetch(PDO::FETCH_ASSOC); if (!$schoolData) { echo json_encode(array("status" => "error", "message" => "ไม่พบข้อมูลสถานศึกษา")); exit; } $geo = $schoolData['geo']; $amphur_name = $schoolData['amphur']; $province_name = $schoolData['province']; $created_at = date('Y-m-d H:i:s'); $sql = "INSERT INTO users (prefixID, firstName, lastName, position, username, password, mobile, amphur, province, schoolID, leader, status, user_type_id, geo, schoolName, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute(array( $prefixID, // prefixID ✅ $firstName, // firstName ✅ $lastName, // lastName ✅ $position, // position ✅ $username, // username ✅ $password_md5, // password ✅ $mobile, // mobile ✅ $amphur_name, // amphur (ชื่ออำเภอ) ✅ $province_name, // province (ชื่อจังหวัด) ✅ $tambon, // schoolID (รหัสสถานศึกษา) ✅ $amp, // leader (รหัสผู้บริหารอำเภอ) ✅ 0, // status = 0 (รออนุมัติ) ✅ 4, // user_type_id = 4 (ระดับตำบล) ✅ $geo, // geo (รหัส 1-9) ✅ '', // schoolName = ว่างเปล่า (ใช้ schoolID แทน) $created_at // created_at = วันเวลาปัจจุบัน ✅ )); echo json_encode(array("status" => "success", "message" => "สมัครสมาชิกเรียบร้อย\n\nอยู่ระหว่างการรออนุมัติให้เข้าใช้งานจาก สกร.ระดับอำเภอ")); } catch (PDOException $e) { echo json_encode(array("status" => "error", "message" => $e->getMessage())); } exit; } ?>