conn = $conn; } else { // หากไม่มีการดึงตัวแปร global ให้ทำการเชื่อมต่อใหม่ (Fallback) $db_type = "mysql"; $hostname = 'localhost'; $dbname = 'web'; $user = 'root'; $password = 'EoD@drFU90'; $option = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ); try { $this->conn = new PDO("$db_type:host=$hostname;dbname=$dbname", $user, $password, $option); } catch (PDOException $e) { die("Connection failed: " . $e->getMessage()); } } } // เพิ่มข้อมูล public function insert_data($table, $data) { $fields = array_keys($data); $placeholders = ":" . implode(", :", $fields); $sql = "INSERT INTO $table (" . implode(", ", $fields) . ") VALUES ($placeholders)"; $query = $this->conn->prepare($sql); // เตรียมข้อมูลสำหรับ Execute $params = []; foreach ($data as $key => $value) { $params[':' . $key] = $value; } try { $query->execute($params); return '0'; // สำเร็จ } catch (PDOException $er) { return $er->getMessage(); } } // แทนที่ข้อมูล (Replace) public function replace_data($table, $data) { $fields = array_keys($data); $placeholders = ":" . implode(", :", $fields); $sql = "REPLACE INTO $table (" . implode(", ", $fields) . ") VALUES ($placeholders)"; $query = $this->conn->prepare($sql); $params = []; foreach ($data as $key => $value) { $params[':' . $key] = $value; } try { $query->execute($params); return '0'; } catch (PDOException $er) { return $er->getMessage(); } } // แก้ไขข้อมูล public function update_data($table, $data, $condi) { $fieldDetails = NULL; foreach ($data as $key => $value) { $fieldDetails .= "$key=:$key,"; } $fieldDetails = rtrim($fieldDetails, ','); $sql = "UPDATE $table SET $fieldDetails WHERE $condi"; $query = $this->conn->prepare($sql); $params = []; foreach ($data as $key => $value) { $params[':' . $key] = $value; } try { $query->execute($params); return '0'; } catch (PDOException $er) { return "Error: " . $er->getMessage(); } } // ลบข้อมูล public function delete_data($table, $condi) { $sql = "DELETE FROM $table WHERE $condi"; $query = $this->conn->prepare($sql); try { $query->execute(); return '0'; } catch (PDOException $er) { return $er->getMessage(); } } } /** * ฟังก์ชันช่วยเหลือ (Helper Functions) */ // จัดการรูปแบบวันที่ function set_date($date, $op) { $da = explode('-', $date); if (count($da) < 3) return $date; // ป้องกัน Error ถ้าส่งมาไม่ครบ if ($op == 'en') { $re = ($da[2] - 543) . '-' . $da[1] . '-' . $da[0]; } else { $re = $da[0] . '-' . $da[1] . '-' . ($da[2] + 543); } return $re; } // ส่งอีเมล (ต้องมีไฟล์ PHPMailer ในระบบ) function send_mail($reciver_address, $reciver_name, $subject, $body) { // ตรวจสอบว่ามีการเรียกใช้ PHPMailer หรือยัง if (!class_exists('PHPMailer\PHPMailer\PHPMailer')) { return "PHPMailer class not found."; } $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->CharSet = "utf-8"; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "tls"; $mail->Host = "smtp.gmail.com"; $mail->Port = 587; $mail->Username = "mailsystem@wasan.me"; $mail->Password = "ilxcfzmbpxldgcgh "; // ระวังอย่าลืมเว้นวรรคท้ายรหัสผ่านถ้ามันไม่ใช่ของจริง $mail->SetFrom("mailsystem@wasan.me", "no-reply"); $mail->Subject = $subject; $mail->MsgHTML($body); $mail->AddAddress($reciver_address, $reciver_name); return $mail->Send() ? 0 : 1; } // อัปโหลดไฟล์ function uploadFile($fn, $target, $fname) { if (!isset($_FILES[$fn])) return ['result' => 'false', 'error' => 'No file uploaded']; $fileType = pathinfo($_FILES[$fn]["name"], PATHINFO_EXTENSION); $targetPath = $target . $fname . '.' . $fileType; if (move_uploaded_file($_FILES[$fn]['tmp_name'], $targetPath)) { return ['result' => 'true', 'fileType' => $fileType]; } else { return [ 'result' => 'false', 'error' => $_FILES[$fn]["error"], 'fileType' => $fileType, 'targetPath' => $targetPath ]; } } // สุ่มตัวอักษร function random_string($length) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; return substr(str_shuffle($characters), 0, $length); } // วันที่ไทย function thaiDate($stamp, $op) { if (empty($stamp)) return "-"; $da = getdate($stamp); $year = $da['year'] + 543; $mon = $da['mon']; $mday = $da['mday']; $wday = $da['wday']; $wdayTH = array("อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศุกร์", "เสาร์"); $monFull = array("", "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"); $monShot = array("", "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."); switch ($op) { case 'fullDate': return "วัน$wdayTH[$wday] ที่ $mday " . $monFull[$mon] . " พ.ศ. $year"; case 'shotMon': return "$mday " . $monShot[$mon] . " $year"; default: return "$mday " . $monFull[$mon] . " $year"; } } // ส่ง CURL function send_curl($url, $data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $content = curl_exec($ch); curl_close($ch); return $content; }