prepare("SELECT id, title FROM `{$table}` WHERE status = 1 ORDER BY id"); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($result)) { $stmt = $pdo->prepare("SELECT id, title FROM `{$table}` ORDER BY id"); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); } return $result; } catch (PDOException $e) { return array(); } } function getNameById($id, $data) { foreach ($data as $item) { if ($item['id'] == $id) return $item['title']; } return ''; } // แปลงวันที่ 'YYYY/MM/DD' → '26 มี.ค. 69' function thaiDateShort($dateRaw) { if (empty($dateRaw)) return ''; $parts = explode('/', $dateRaw); if (count($parts) !== 3) return ''; $y = intval($parts[0]); $m = intval($parts[1]); $d = intval($parts[2]); if ($m < 1 || $m > 12) return ''; $months = array('','ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.','ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'); $thaiYear = ($y + 543) % 100; return $d . ' ' . $months[$m] . ' ' . $thaiYear; } // ดึงข้อมูลประเภทต่างๆ $prefixData = getTypeData('prefix', $pdo); $genderData = getTypeData('typeSex', $pdo); $occupationData2 = getTypeData('typeOccupation', $pdo); $statusData = getTypeData('typeStatus', $pdo); $serviceTypeData = getTypeData('typeService', $pdo); // ดึงข้อมูลประเด็น $educationData = getTypeData('typeeducational', $pdo); $occuIssueData = getTypeData('typeeduoccupation', $pdo); $socialData = getTypeData('typesocialsspects', $pdo); $giveHelpData = getTypeData('typegivehelp', $pdo); // ดึงข้อมูลความสำเร็จ try { $stmt = $pdo->prepare("SELECT id, title FROM typeservicesuccess ORDER BY id"); $stmt->execute(); $serviceSuccessData = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { $serviceSuccessData = array(); } // ดึงข้อมูลนัดหมายติดตาม $appointmentData = getTypeData('typeAppointment', $pdo); // รับค่า filter วันที่ $start_date = isset($_POST['start_date']) ? $_POST['start_date'] : ''; $end_date = isset($_POST['end_date']) ? $_POST['end_date'] : ''; $isExport = isset($_POST['export']) && $_POST['export'] === 'excel'; // ดึงข้อมูลผู้รับบริการทั้งหมดของโรงเรียน/หน่วยงานนี้ try { $where = "ic.username = ? AND ic.schoolID = ?"; $params = array($username, $schoolID); if (!empty($start_date) && empty($end_date)) { // ค้นหาวันเดียว $where .= " AND ics.service_request_date = ?"; $params[] = $start_date; } elseif (!empty($start_date)) { $where .= " AND ics.service_request_date >= ?"; $params[] = $start_date; } if (!empty($end_date)) { $where .= " AND ics.service_request_date <= ?"; $params[] = $end_date; } $stmt = $pdo->prepare(" SELECT ic.id, ic.province, ic.district, ic.prefix_id, ic.first_name, ic.last_name, YEAR(ic.birth_date) AS birth_year, MONTH(ic.birth_date) AS birth_month, DAY(ic.birth_date) AS birth_day, ic.gender_id, ic.nationality, ic.occupation_id, ic.marital_status_id, ic.service_type_id, ics.service_request_number, DATE_FORMAT(ics.service_request_date, '%Y/%m/%d') AS service_request_date_raw, ics.service_request_details, ics.education_issues, ics.education_other, ics.career_issues, ics.career_other, ics.personal_issues, ics.personal_other, ics.referral_services, ics.referral_other, ics.service_success_id, ics.service_failure_reason, ics.recommendations, ics.follow_up_id, DATE_FORMAT(ics.follow_up_date, '%Y/%m/%d') AS follow_up_date_raw, ics.counselor_first_name, ics.counselor_last_name, ics.counselor_position, COALESCE(u.schoolName, ics.counselor_organization) AS counselor_organization, ics.counselor_phone FROM individual_counseling ic LEFT JOIN individual_counseling_service ics ON ic.id = ics.individual_counseling_id LEFT JOIN users u ON u.schoolID = ics.counselor_organization WHERE {$where} ORDER BY ic.id ASC, ics.service_request_number ASC "); $stmt->execute($params); $records = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { $records = array(); } // ===== ส่งออก Excel ===== if ($isExport) { $filename = 'รายงานรายบุคคล_' . date('Ymd_His') . '.xls'; header('Content-Type: application/vnd.ms-excel; charset=utf-8'); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Cache-Control: max-age=0'); echo "\xEF\xBB\xBF"; // UTF-8 BOM echo ''; echo ''; echo ''; $totalCols = 15 + (count($educationData)+1) + (count($occuIssueData)+1) + (count($socialData)+1) + 3 + (count($giveHelpData)+1) + 2 + 5; // หัวรายงาน echo ''; // ช่วงวันที่ค้นหา if (!empty($start_date) || !empty($end_date)) { if (!empty($start_date) && !empty($end_date)) { $dateLabel = thaiDateShort(str_replace('-', '/', $start_date)) . ' - ' . thaiDateShort(str_replace('-', '/', $end_date)); } elseif (!empty($start_date)) { $dateLabel = thaiDateShort(str_replace('-', '/', $start_date)); } else { $dateLabel = 'ถึงวันที่ ' . thaiDateShort(str_replace('-', '/', $end_date)); } echo ''; } echo ''; // Header row 1 echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; // Header row 2 echo ''; foreach ($educationData as $item) echo ''; echo ''; foreach ($occuIssueData as $item) echo ''; echo ''; foreach ($socialData as $item) echo ''; echo ''; echo ''; echo ''; echo ''; foreach ($giveHelpData as $item) echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; // Data rows $seq = 1; foreach ($records as $row) { $eduIssues = json_decode($row['education_issues'] ?? '[]', true) ?: []; $careerIssues = json_decode($row['career_issues'] ?? '[]', true) ?: []; $personalIssues = json_decode($row['personal_issues'] ?? '[]', true) ?: []; $referrals = json_decode($row['referral_services'] ?? '[]', true) ?: []; $age = ''; if (!empty($row['birth_year'])) { $birth = new DateTime(sprintf('%04d-%02d-%02d', $row['birth_year'], $row['birth_month'], $row['birth_day'])); $age = $birth->diff(new DateTime())->y; } $serviceDate = thaiDateShort($row['service_request_date_raw'] ?? ''); $followUpDate = thaiDateShort($row['follow_up_date_raw'] ?? ''); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; foreach ($educationData as $item) echo ''; echo ''; foreach ($occuIssueData as $item) echo ''; echo ''; foreach ($socialData as $item) echo ''; echo ''; echo ''; echo ''; echo ''; foreach ($giveHelpData as $item) echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; $phone = trim($row['counselor_phone'] ?? ''); echo ''; echo ''; } echo '
ผลการให้บริการแนะแนวและให้คำปรึกษา รายบุคคล
ช่วงวันที่ค้นหา: ' . $dateLabel . ' (' . count($records) . ' รายการ)
ลำดับที่วันที่ขอรับบริการจังหวัดอำเภอคำนำหน้าชื่อชื่อสกุลอายุเพศสัญชาติประกอบอาชีพสถานภาพประเภทผู้รับบริการครั้งที่ขอรับบริการรายละเอียดที่ขอรับบริการด้านการศึกษาด้านอาชีพด้านสังคมและส่วนตัวสรุปผลการให้บริการให้ความช่วยเหลือ/ส่งต่อ/ประสาน หน่วยงานหรือเครือข่ายภายนอกนัดหมายติดตามผู้ปฏิบัติหน้าที่ให้คำปรึกษา
' . htmlspecialchars($item['title']) . 'อื่นๆ (ด้านการศึกษา)' . htmlspecialchars($item['title']) . 'อื่นๆ (ด้านอาชีพ)' . htmlspecialchars($item['title']) . 'อื่นๆ (ด้านสังคม)สิ่งที่ดำเนินการหรือข้อแนะนำความสำเร็จในการให้บริการเหตุผลไม่สำเร็จ' . htmlspecialchars($item['title']) . 'อื่นๆ (การส่งต่อ)ประเภทนัดหมายวันที่นัดหมายชื่อผู้ให้คำปรึกษาสกุลตำแหน่งหน่วยงานเบอร์โทรศัพท์
' . $seq++ . '' . htmlspecialchars($serviceDate) . '' . htmlspecialchars($row['province'] ?? '') . '' . htmlspecialchars($row['district'] ?? '') . '' . htmlspecialchars(getNameById($row['prefix_id'], $prefixData)) . '' . htmlspecialchars($row['first_name'] ?? '') . '' . htmlspecialchars($row['last_name'] ?? '') . '' . $age . '' . htmlspecialchars(getNameById($row['gender_id'], $genderData)) . '' . htmlspecialchars($row['nationality'] ?? '') . '' . htmlspecialchars(getNameById($row['occupation_id'], $occupationData2)) . '' . htmlspecialchars(getNameById($row['marital_status_id'], $statusData)) . '' . htmlspecialchars(getNameById($row['service_type_id'], $serviceTypeData)) . '' . htmlspecialchars($row['service_request_number'] ?? '') . '' . htmlspecialchars($row['service_request_details'] ?? '') . '' . (in_array($item['id'], $eduIssues) ? '1' : '0') . '' . htmlspecialchars(trim($row['education_other'] ?? '')) . '' . (in_array($item['id'], $careerIssues) ? '1' : '0') . '' . htmlspecialchars(trim($row['career_other'] ?? '')) . '' . (in_array($item['id'], $personalIssues) ? '1' : '0') . '' . htmlspecialchars(trim($row['personal_other'] ?? '')) . '' . htmlspecialchars($row['recommendations'] ?? '') . '' . htmlspecialchars(getNameById($row['service_success_id'], $serviceSuccessData)) . '' . htmlspecialchars($row['service_failure_reason'] ?? '') . '' . (in_array($item['id'], $referrals) ? '1' : '0') . '' . htmlspecialchars(trim($row['referral_other'] ?? '')) . '' . htmlspecialchars(getNameById($row['follow_up_id'], $appointmentData)) . '' . htmlspecialchars($followUpDate) . '' . htmlspecialchars($row['counselor_first_name'] ?? '') . '' . htmlspecialchars($row['counselor_last_name'] ?? '') . '' . htmlspecialchars($row['counselor_position'] ?? '') . '' . htmlspecialchars($row['counselor_organization'] ?? '') . '' . "\t" . htmlspecialchars($phone) . '
'; exit(); } ?> รายงานรายบุคคลและวิเคราะห์ประเด็นการขอรับบริการ

ผลการให้บริการแนะแนวและให้คำปรึษา รายบุคคล

ช่วงวันที่ค้นหา: ถึงวันที่ ( รายการ)
diff(new DateTime())->y; } $serviceDate = thaiDateShort($row['service_request_date_raw'] ?? ''); $followDate = thaiDateShort($row['follow_up_date_raw'] ?? ''); ?>
ลำดับที่ วันที่ขอรับบริการ จังหวัด อำเภอ คำนำหน้าชื่อ ชื่อ สกุล อายุ เพศ สัญชาติ ประกอบอาชีพ สถานภาพ ประเภทผู้รับบริการ ครั้งที่ขอรับบริการ รายละเอียดที่ขอรับบริการ ด้านการศึกษา ด้านอาชีพ ด้านสังคมและส่วนตัว สรุปผลการให้บริการ ให้ความช่วยเหลือ/ส่งต่อ/ประสาน หน่วยงานหรือเครือข่ายภายนอก นัดหมายติดตาม ผู้ปฏิบัติหน้าที่ให้คำปรึกษา
อื่นๆ (ด้านการศึกษา) อื่นๆ (ด้านอาชีพ) อื่นๆ (ด้านสังคม) สิ่งที่ดำเนินการหรือข้อแนะนำ ความสำเร็จในการให้บริการ เหตุผลไม่สำเร็จ อื่นๆ (การส่งต่อ) ประเภทนัดหมาย วันที่นัดหมาย ชื่อผู้ให้คำปรึกษา สกุล ตำแหน่ง หน่วยงาน เบอร์โทรศัพท์
ไม่พบข้อมูล
✓' : ''; ?> ✓' : ''; ?> ✓' : ''; ?> ✓' : ''; ?>