2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 0 AND 6 THEN 1 ELSE 0 END ELSE 0 END) as age_0_6, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 7 AND 14 THEN 1 ELSE 0 END ELSE 0 END) as age_7_14, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 15 AND 18 THEN 1 ELSE 0 END ELSE 0 END) as age_15_18, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 19 AND 24 THEN 1 ELSE 0 END ELSE 0 END) as age_19_24, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 25 AND 34 THEN 1 ELSE 0 END ELSE 0 END) as age_25_34, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 35 AND 44 THEN 1 ELSE 0 END ELSE 0 END) as age_35_44, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 45 AND 54 THEN 1 ELSE 0 END ELSE 0 END) as age_45_54, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) BETWEEN 55 AND 59 THEN 1 ELSE 0 END ELSE 0 END) as age_55_59, SUM(CASE WHEN ic.birth_date IS NOT NULL THEN CASE WHEN TIMESTAMPDIFF(YEAR, CASE WHEN YEAR(ic.birth_date) > 2500 THEN DATE_SUB(ic.birth_date, INTERVAL 543 YEAR) ELSE ic.birth_date END, CURDATE()) >= 60 THEN 1 ELSE 0 END ELSE 0 END) as age_60_plus FROM individual_counseling ic LEFT JOIN school s ON ic.schoolID = s.schoolID WHERE DATE(ic.created_at) BETWEEN ? AND ? GROUP BY ic.schoolID, s.firstname ORDER BY s.firstname "; // Education consulting categories query (A1-A12) - รองรับ JSON format $eduSql = " SELECT ic.schoolID, COUNT(CASE WHEN ics.education_issues LIKE '%\"1\"%' OR ics.education_issues = '1' OR ics.education_issues = 1 THEN 1 END) as edu_a1, COUNT(CASE WHEN ics.education_issues LIKE '%\"2\"%' OR ics.education_issues = '2' OR ics.education_issues = 2 THEN 1 END) as edu_a2, COUNT(CASE WHEN ics.education_issues LIKE '%\"3\"%' OR ics.education_issues = '3' OR ics.education_issues = 3 THEN 1 END) as edu_a3, COUNT(CASE WHEN ics.education_issues LIKE '%\"4\"%' OR ics.education_issues = '4' OR ics.education_issues = 4 THEN 1 END) as edu_a4, COUNT(CASE WHEN ics.education_issues LIKE '%\"5\"%' OR ics.education_issues = '5' OR ics.education_issues = 5 THEN 1 END) as edu_a5, COUNT(CASE WHEN ics.education_issues LIKE '%\"6\"%' OR ics.education_issues = '6' OR ics.education_issues = 6 THEN 1 END) as edu_a6, COUNT(CASE WHEN ics.education_issues LIKE '%\"7\"%' OR ics.education_issues = '7' OR ics.education_issues = 7 THEN 1 END) as edu_a7, COUNT(CASE WHEN ics.education_issues LIKE '%\"8\"%' OR ics.education_issues = '8' OR ics.education_issues = 8 THEN 1 END) as edu_a8, COUNT(CASE WHEN ics.education_issues LIKE '%\"9\"%' OR ics.education_issues = '9' OR ics.education_issues = 9 THEN 1 END) as edu_a9, COUNT(CASE WHEN ics.education_issues LIKE '%\"10\"%' OR ics.education_issues = '10' OR ics.education_issues = 10 THEN 1 END) as edu_a10, COUNT(CASE WHEN ics.education_issues LIKE '%\"11\"%' OR ics.education_issues = '11' OR ics.education_issues = 11 THEN 1 END) as edu_a11, COUNT(CASE WHEN ics.education_issues LIKE '%education-other%' OR ics.education_issues LIKE '%other%' THEN 1 END) as edu_a12 FROM individual_counseling_service ics JOIN individual_counseling ic ON ics.individual_counseling_id = ic.id WHERE DATE(ic.created_at) BETWEEN ? AND ? AND ics.education_issues IS NOT NULL AND ics.education_issues != '' GROUP BY ic.schoolID "; // Career consulting categories query (B1-B10) - รองรับ JSON format $careerSql = " SELECT ic.schoolID, COUNT(CASE WHEN ics.career_issues LIKE '%\"1\"%' OR ics.career_issues = '1' OR ics.career_issues = 1 THEN 1 END) as career_b1, COUNT(CASE WHEN ics.career_issues LIKE '%\"2\"%' OR ics.career_issues = '2' OR ics.career_issues = 2 THEN 1 END) as career_b2, COUNT(CASE WHEN ics.career_issues LIKE '%\"3\"%' OR ics.career_issues = '3' OR ics.career_issues = 3 THEN 1 END) as career_b3, COUNT(CASE WHEN ics.career_issues LIKE '%\"4\"%' OR ics.career_issues = '4' OR ics.career_issues = 4 THEN 1 END) as career_b4, COUNT(CASE WHEN ics.career_issues LIKE '%\"5\"%' OR ics.career_issues = '5' OR ics.career_issues = 5 THEN 1 END) as career_b5, COUNT(CASE WHEN ics.career_issues LIKE '%\"6\"%' OR ics.career_issues = '6' OR ics.career_issues = 6 THEN 1 END) as career_b6, COUNT(CASE WHEN ics.career_issues LIKE '%\"7\"%' OR ics.career_issues = '7' OR ics.career_issues = 7 THEN 1 END) as career_b7, COUNT(CASE WHEN ics.career_issues LIKE '%\"8\"%' OR ics.career_issues = '8' OR ics.career_issues = 8 THEN 1 END) as career_b8, COUNT(CASE WHEN ics.career_issues LIKE '%\"9\"%' OR ics.career_issues = '9' OR ics.career_issues = 9 THEN 1 END) as career_b9, COUNT(CASE WHEN ics.career_issues LIKE '%career-other%' OR ics.career_issues LIKE '%other%' THEN 1 END) as career_b10 FROM individual_counseling_service ics JOIN individual_counseling ic ON ics.individual_counseling_id = ic.id WHERE DATE(ic.created_at) BETWEEN ? AND ? AND ics.career_issues IS NOT NULL AND ics.career_issues != '' GROUP BY ic.schoolID "; // Personal/Social consulting categories query (C1-C11) - รองรับ JSON format $personalSql = " SELECT ic.schoolID, COUNT(CASE WHEN ics.personal_issues LIKE '%\"1\"%' OR ics.personal_issues = '1' OR ics.personal_issues = 1 THEN 1 END) as personal_c1, COUNT(CASE WHEN ics.personal_issues LIKE '%\"2\"%' OR ics.personal_issues = '2' OR ics.personal_issues = 2 THEN 1 END) as personal_c2, COUNT(CASE WHEN ics.personal_issues LIKE '%\"3\"%' OR ics.personal_issues = '3' OR ics.personal_issues = 3 THEN 1 END) as personal_c3, COUNT(CASE WHEN ics.personal_issues LIKE '%\"4\"%' OR ics.personal_issues = '4' OR ics.personal_issues = 4 THEN 1 END) as personal_c4, COUNT(CASE WHEN ics.personal_issues LIKE '%\"5\"%' OR ics.personal_issues = '5' OR ics.personal_issues = 5 THEN 1 END) as personal_c5, COUNT(CASE WHEN ics.personal_issues LIKE '%\"6\"%' OR ics.personal_issues = '6' OR ics.personal_issues = 6 THEN 1 END) as personal_c6, COUNT(CASE WHEN ics.personal_issues LIKE '%\"7\"%' OR ics.personal_issues = '7' OR ics.personal_issues = 7 THEN 1 END) as personal_c7, COUNT(CASE WHEN ics.personal_issues LIKE '%\"8\"%' OR ics.personal_issues = '8' OR ics.personal_issues = 8 THEN 1 END) as personal_c8, COUNT(CASE WHEN ics.personal_issues LIKE '%\"9\"%' OR ics.personal_issues = '9' OR ics.personal_issues = 9 THEN 1 END) as personal_c9, COUNT(CASE WHEN ics.personal_issues LIKE '%\"10\"%' OR ics.personal_issues = '10' OR ics.personal_issues = 10 THEN 1 END) as personal_c10, COUNT(CASE WHEN ics.personal_issues LIKE '%personal-other%' OR ics.personal_issues LIKE '%other%' THEN 1 END) as personal_c11 FROM individual_counseling_service ics JOIN individual_counseling ic ON ics.individual_counseling_id = ic.id WHERE DATE(ic.created_at) BETWEEN ? AND ? AND ics.personal_issues IS NOT NULL AND ics.personal_issues != '' GROUP BY ic.schoolID "; // Service results and referrals query $resultsSql = " SELECT ic.schoolID, -- ผลการให้บริการ - นับจำนวน records ที่ซ้ำกัน COUNT(CASE WHEN ics.service_success_id = '1' OR ics.service_success_id = 1 THEN 1 END) as success_times, COUNT(*) as total_services, -- Referral services (H1-H10) - รองรับ JSON format COUNT(CASE WHEN ics.referral_services LIKE '%\"1\"%' OR ics.referral_services = '1' OR ics.referral_services = 1 THEN 1 END) as coord_h1, COUNT(CASE WHEN ics.referral_services LIKE '%\"2\"%' OR ics.referral_services = '2' OR ics.referral_services = 2 THEN 1 END) as coord_h2, COUNT(CASE WHEN ics.referral_services LIKE '%\"3\"%' OR ics.referral_services = '3' OR ics.referral_services = 3 THEN 1 END) as coord_h3, COUNT(CASE WHEN ics.referral_services LIKE '%\"4\"%' OR ics.referral_services = '4' OR ics.referral_services = 4 THEN 1 END) as coord_h4, COUNT(CASE WHEN ics.referral_services LIKE '%\"5\"%' OR ics.referral_services = '5' OR ics.referral_services = 5 THEN 1 END) as coord_h5, COUNT(CASE WHEN ics.referral_services LIKE '%\"6\"%' OR ics.referral_services = '6' OR ics.referral_services = 6 THEN 1 END) as coord_h6, COUNT(CASE WHEN ics.referral_services LIKE '%\"7\"%' OR ics.referral_services = '7' OR ics.referral_services = 7 THEN 1 END) as coord_h7, COUNT(CASE WHEN ics.referral_services LIKE '%\"8\"%' OR ics.referral_services = '8' OR ics.referral_services = 8 THEN 1 END) as coord_h8, COUNT(CASE WHEN ics.referral_services LIKE '%\"9\"%' OR ics.referral_services = '9' OR ics.referral_services = 9 THEN 1 END) as coord_h9, COUNT(CASE WHEN ics.referral_services LIKE '%referral-other%' OR ics.referral_services LIKE '%other%' THEN 1 END) as coord_h10 FROM individual_counseling_service ics JOIN individual_counseling ic ON ics.individual_counseling_id = ic.id WHERE DATE(ic.created_at) BETWEEN ? AND ? GROUP BY ic.schoolID "; try { // Execute main query $stmt = $pdo->prepare($sql); $stmt->execute(array($start_date, $end_date, $start_date, $end_date)); $mainData = $stmt->fetchAll(PDO::FETCH_ASSOC); // Execute education issues query $eduStmt = $pdo->prepare($eduSql); $eduStmt->execute(array($start_date, $end_date)); $eduData = array(); foreach($eduStmt->fetchAll(PDO::FETCH_ASSOC) as $row) { $eduData[$row['schoolID']] = $row; } // Execute career issues query $careerStmt = $pdo->prepare($careerSql); $careerStmt->execute(array($start_date, $end_date)); $careerData = array(); foreach($careerStmt->fetchAll(PDO::FETCH_ASSOC) as $row) { $careerData[$row['schoolID']] = $row; } // Execute personal/social issues query $personalStmt = $pdo->prepare($personalSql); $personalStmt->execute(array($start_date, $end_date)); $personalData = array(); foreach($personalStmt->fetchAll(PDO::FETCH_ASSOC) as $row) { $personalData[$row['schoolID']] = $row; } // Execute results and referrals query $resultsStmt = $pdo->prepare($resultsSql); $resultsStmt->execute(array($start_date, $end_date)); $resultsData = array(); foreach($resultsStmt->fetchAll(PDO::FETCH_ASSOC) as $row) { $resultsData[$row['schoolID']] = $row; } // Merge data $reportData = array(); foreach($mainData as $row) { $schoolID = $row['schoolID']; // Get data for this school from all queries $eduRow = isset($eduData[$schoolID]) ? $eduData[$schoolID] : array(); $careerRow = isset($careerData[$schoolID]) ? $careerData[$schoolID] : array(); $personalRow = isset($personalData[$schoolID]) ? $personalData[$schoolID] : array(); $resultsRow = isset($resultsData[$schoolID]) ? $resultsData[$schoolID] : array(); // Calculate totals $edu_total = 0; for($i = 1; $i <= 12; $i++) { $key = 'edu_a' . $i; $edu_total += isset($eduRow[$key]) ? $eduRow[$key] : 0; } $career_total = 0; for($i = 1; $i <= 10; $i++) { $key = 'career_b' . $i; $career_total += isset($careerRow[$key]) ? $careerRow[$key] : 0; } $personal_total = 0; for($i = 1; $i <= 11; $i++) { $key = 'personal_c' . $i; $personal_total += isset($personalRow[$key]) ? $personalRow[$key] : 0; } // Calculate success percentage $success_times = isset($resultsRow['success_times']) ? $resultsRow['success_times'] : 0; $total_services = isset($resultsRow['total_services']) ? $resultsRow['total_services'] : 0; $success_percentage = ($total_services > 0) ? ($success_times / $total_services) * 100 : 0; $reportData[] = array( 'institution' => !empty($row['institution']) ? $row['institution'] : 'ไม่ระบุ', 'service_count' => $row['service_count'], 'service_times' => $row['service_times'], 'qualified_learners' => $row['qualified_learners'], 'self_dev_learners' => $row['self_dev_learners'], 'lifelong_learners' => $row['lifelong_learners'], 'general_public' => $row['general_public'], 'age_0_6' => $row['age_0_6'], 'age_7_14' => $row['age_7_14'], 'age_15_18' => $row['age_15_18'], 'age_19_24' => $row['age_19_24'], 'age_25_34' => $row['age_25_34'], 'age_35_44' => $row['age_35_44'], 'age_45_54' => $row['age_45_54'], 'age_55_59' => $row['age_55_59'], 'age_60_plus' => $row['age_60_plus'], // Education consulting categories (A1-A12) 'edu_a1' => isset($eduRow['edu_a1']) ? $eduRow['edu_a1'] : 0, 'edu_a2' => isset($eduRow['edu_a2']) ? $eduRow['edu_a2'] : 0, 'edu_a3' => isset($eduRow['edu_a3']) ? $eduRow['edu_a3'] : 0, 'edu_a4' => isset($eduRow['edu_a4']) ? $eduRow['edu_a4'] : 0, 'edu_a5' => isset($eduRow['edu_a5']) ? $eduRow['edu_a5'] : 0, 'edu_a6' => isset($eduRow['edu_a6']) ? $eduRow['edu_a6'] : 0, 'edu_a7' => isset($eduRow['edu_a7']) ? $eduRow['edu_a7'] : 0, 'edu_a8' => isset($eduRow['edu_a8']) ? $eduRow['edu_a8'] : 0, 'edu_a9' => isset($eduRow['edu_a9']) ? $eduRow['edu_a9'] : 0, 'edu_a10' => isset($eduRow['edu_a10']) ? $eduRow['edu_a10'] : 0, 'edu_a11' => isset($eduRow['edu_a11']) ? $eduRow['edu_a11'] : 0, 'edu_a12' => isset($eduRow['edu_a12']) ? $eduRow['edu_a12'] : 0, 'edu_total' => $edu_total, // Career consulting categories (B1-B10) 'career_b1' => isset($careerRow['career_b1']) ? $careerRow['career_b1'] : 0, 'career_b2' => isset($careerRow['career_b2']) ? $careerRow['career_b2'] : 0, 'career_b3' => isset($careerRow['career_b3']) ? $careerRow['career_b3'] : 0, 'career_b4' => isset($careerRow['career_b4']) ? $careerRow['career_b4'] : 0, 'career_b5' => isset($careerRow['career_b5']) ? $careerRow['career_b5'] : 0, 'career_b6' => isset($careerRow['career_b6']) ? $careerRow['career_b6'] : 0, 'career_b7' => isset($careerRow['career_b7']) ? $careerRow['career_b7'] : 0, 'career_b8' => isset($careerRow['career_b8']) ? $careerRow['career_b8'] : 0, 'career_b9' => isset($careerRow['career_b9']) ? $careerRow['career_b9'] : 0, 'career_b10' => isset($careerRow['career_b10']) ? $careerRow['career_b10'] : 0, 'career_total' => $career_total, // Personal/Social consulting categories (C1-C11) 'personal_c1' => isset($personalRow['personal_c1']) ? $personalRow['personal_c1'] : 0, 'personal_c2' => isset($personalRow['personal_c2']) ? $personalRow['personal_c2'] : 0, 'personal_c3' => isset($personalRow['personal_c3']) ? $personalRow['personal_c3'] : 0, 'personal_c4' => isset($personalRow['personal_c4']) ? $personalRow['personal_c4'] : 0, 'personal_c5' => isset($personalRow['personal_c5']) ? $personalRow['personal_c5'] : 0, 'personal_c6' => isset($personalRow['personal_c6']) ? $personalRow['personal_c6'] : 0, 'personal_c7' => isset($personalRow['personal_c7']) ? $personalRow['personal_c7'] : 0, 'personal_c8' => isset($personalRow['personal_c8']) ? $personalRow['personal_c8'] : 0, 'personal_c9' => isset($personalRow['personal_c9']) ? $personalRow['personal_c9'] : 0, 'personal_c10' => isset($personalRow['personal_c10']) ? $personalRow['personal_c10'] : 0, 'personal_c11' => isset($personalRow['personal_c11']) ? $personalRow['personal_c11'] : 0, 'personal_total' => $personal_total, // Results and coordination 'success_times' => $success_times, 'success_percentage' => $success_percentage, 'coord_h1' => isset($resultsRow['coord_h1']) ? $resultsRow['coord_h1'] : 0, 'coord_h2' => isset($resultsRow['coord_h2']) ? $resultsRow['coord_h2'] : 0, 'coord_h3' => isset($resultsRow['coord_h3']) ? $resultsRow['coord_h3'] : 0, 'coord_h4' => isset($resultsRow['coord_h4']) ? $resultsRow['coord_h4'] : 0, 'coord_h5' => isset($resultsRow['coord_h5']) ? $resultsRow['coord_h5'] : 0, 'coord_h6' => isset($resultsRow['coord_h6']) ? $resultsRow['coord_h6'] : 0, 'coord_h7' => isset($resultsRow['coord_h7']) ? $resultsRow['coord_h7'] : 0, 'coord_h8' => isset($resultsRow['coord_h8']) ? $resultsRow['coord_h8'] : 0, 'coord_h9' => isset($resultsRow['coord_h9']) ? $resultsRow['coord_h9'] : 0, 'coord_h10' => isset($resultsRow['coord_h10']) ? $resultsRow['coord_h10'] : 0, 'remarks' => '' ); } } catch (PDOException $e) { echo "Database error: " . $e->getMessage(); $reportData = array(); } // Debug information if (isset($_GET['debug']) && $_GET['debug'] == '1') { echo "
"; echo "

Debug Information:

"; echo "

Main Data Count: " . count($mainData) . "

"; echo "

Education Data Count: " . count($eduData) . "

"; echo "

Career Data Count: " . count($careerData) . "

"; echo "

Personal Data Count: " . count($personalData) . "

"; echo "

Results Data Count: " . count($resultsData) . "

"; echo "

Report Data Count: " . count($reportData) . "

"; if (!empty($eduData)) { echo "

Sample Education Data:

"; $firstEduData = array_slice($eduData, 0, 1); echo "
" . print_r($firstEduData, true) . "
"; } if (!empty($careerData)) { echo "

Sample Career Data:

"; $firstCareerData = array_slice($careerData, 0, 1); echo "
" . print_r($firstCareerData, true) . "
"; } if (!empty($personalData)) { echo "

Sample Personal Data:

"; $firstPersonalData = array_slice($personalData, 0, 1); echo "
" . print_r($firstPersonalData, true) . "
"; } if (!empty($resultsData)) { echo "

Sample Results Data:

"; $firstResultsData = array_slice($resultsData, 0, 1); echo "
" . print_r($firstResultsData, true) . "
"; } echo "
"; } // Use reportData instead of sampleData $sampleData = $reportData; ?>

แบบรายงานข้อมูลบริการให้คำปรึกษารายบุคคล

กรมส่งเสริมการเรียนรู้


ที่
หน่วยงานการศึกษา/
สถานศึกษา
ข้อมูลการให้บริการ
จำนวนผู้รับบริการจำแนกตามประเภท (คน)
จำนวนผู้รับบริการจำแนกตามช่วงอายุ (คน)
บริการให้คำปรึกษาด้านการศึกษาจำแนกตามประเด็น (เคส)
บริการให้คำปรึกษาด้านอาชีพจำแนกตามประเด็น (เคส)
บริการให้คำปรึกษาด้านส่วนตัวและสังคมจำแนกตามประเด็น (เคส)
ผลการให้บริการ
จำนวนในการให้ความช่วยเหลือ/ส่งต่อ/ประสาน
หน่วยงานภายในหรือเครือข่ายภายนอก (ครั้ง)
หมายเหตุ
จำนวน
(คน)
จำนวน
(ครั้ง)
ผู้เรียน
คุณวุฒิตามระดับ
ผู้เรียน
พัฒนาตนเอง
ผู้เรียน
ตลอดชีวิต
ประชาชน
ทั่วไป
0-6
7-14
15-18
19-24
25-34
35-44
45-54
55-59
60 ปี
ขึ้นไป
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
รวม
B1
B2
B3
B4
B5
B6
B7
B8
B9
B10
รวม
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
C11
รวม
สำเร็จ
(ครั้ง)
คิดเป็น
ร้อยละ
H1
H2
H3
H4
H5
H6
H7
H8
H9
H10
- -