HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux host 6.8.0-107-generic #107-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 13 19:51:50 UTC 2026 x86_64
User: w230 (1248)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/w230/html/attendance/export_pdf.php
<?php
include 'db.php';
/*
require_once __DIR__ . '/vendor/autoload.php';

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];

$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];

$mpdf = new \Mpdf\Mpdf([
    'fontDir' => array_merge($fontDirs, [
        __DIR__ . '/tmp',
    ]),
    'fontdata' => $fontData + [
        'sarabun' => [
            'R' => 'THSarabunNew.ttf',
            'I' => 'THSarabunNew Italic.ttf',
            'B' => 'THSarabunNew Bold.ttf',
            'BI' => 'THSarabunNew BoldItalic.ttf'
        ]
    ], 
    'default_font' => 'sarabun'
    
]);
 // สิ้นสุดคำสั่ง Export ไฟล์ PDF ในส่วนบน เริ่มกำหนดตำแหน่งเริ่มต้นในการนำเนื้อหามาแสดงผลผ่าน
$mpdf->SetFont('sarabun','',14);
ob_start();  //ฟังก์ชัน ob_start()
*/
?>
<?php
/*
// รับค่าจากฟอร์ม
$class_level = $_GET['class_level'] ?? '';
$start_date = $_GET['start_date'] ?? '';
$end_date = $_GET['end_date'] ?? '';
//echo "ห้อง:".$class_level."จากวันที่:". $start_date."ถึงวันที่:". $end_date;
// เงื่อนไข WHERE
$where1 = "WHERE a.date BETWEEN '$start_date' AND '$end_date'";
if (!empty($class_level)) {
    $where1 .= " AND s.class_level = '$class_level'";
}

// ดึงข้อมูลรายชื่อ
$sql1 = "SELECT s.fullname, s.class_level, a.date, a.status 
        FROM attendance a 
        JOIN students s ON a.student_id = s.id 
        $where1
        ORDER BY a.date DESC, s.fullname ASC";

$result1 = $conn->query($sql1);

// เก็บข้อมูลสถิติ
$summary = [];
$total = 0;
$statuses = ['มา', 'ขาด', 'ลา', 'สาย', 'ป่วย'];
foreach ($statuses as $status) {
    $summary[$status] = 0;
}

?>
<!--cccccccc--->
<?php
// สร้างเงื่อนไข SQL ตามช่วงเวลาและชั้นเรียน
$where = "WHERE attendance.date BETWEEN '$start_date' AND '$end_date'";
if ($class_level != '') {
    $where .= " AND students.class_level = '$class_level'";
}

// SQL รวมข้อมูลรายงานแยกตามระดับชั้น พร้อมนับเพศโดยอ่านจาก fullname
$sql1 = "SELECT 
            students.class_level,
            COUNT(DISTINCT students.id) AS total_students,
            SUM(CASE WHEN students.fullname LIKE 'ด.ญ.%' OR students.fullname LIKE 'นางสาว%' THEN 1 ELSE 0 END) AS female_students,
            SUM(CASE WHEN students.fullname LIKE 'ด.ช.%' OR students.fullname LIKE 'นาย%' THEN 1 ELSE 0 END) AS male_students,
            SUM(CASE WHEN attendance.status = 'มา' THEN 1 ELSE 0 END) AS present,
            SUM(CASE WHEN attendance.status = 'ลา' THEN 1 ELSE 0 END) AS leave_count,
            SUM(CASE WHEN attendance.status = 'ขาด' THEN 1 ELSE 0 END) AS absent,
            SUM(CASE WHEN attendance.status = 'สาย' THEN 1 ELSE 0 END) AS late,
            SUM(CASE WHEN attendance.status = 'ป่วย' THEN 1 ELSE 0 END) AS sick
        FROM students
        LEFT JOIN attendance ON attendance.student_id = students.id
        $where
        GROUP BY students.class_level
        ORDER BY students.class_level";

$result = $conn->query($sql1);

// เก็บข้อมูลสำหรับแสดงผลและสรุป
$data = [];
$sum = [
    'total_students' => 0,
    'female_students' => 0,
    'male_students' => 0,
    'present' => 0,
    'leave_count' => 0,
    'absent' => 0,
    'late' => 0,
    'sick' => 0
];

while ($row = $result->fetch_assoc()) {
    $data[] = $row;
    // รวมยอดสรุป
    foreach ($sum as $key => &$value) {
        $value += (int)$row[$key];
    }
}

// ฟังก์ชันคำนวณร้อยละ
function percent($num, $total) {
    return $total > 0 ? number_format(($num / $total) * 100, 2) : '0.00';
}
*/
?>


<!--0000000000000000000000000000000000000000000000000000000000000000000000000-->
<!DOCTYPE html>
<html lang="th">
<head>
    <meta charset="UTF-8">
    <title>รายงานสถิติการมาเรียน</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
    <style>
        body { font-size: 20px; }
        .center { text-align: center; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { font-size: 20px; border: 2px solid black; padding: 5px; text-align: center; }
        .signature-table { margin-top: 20px; width: 100%; text-align: center; }
        .signature-space { height: 80px; }
        .btn-submit {
            background: #4facfe;
            color: white;
            border: none;
            margin-top: 20px;
            cursor: pointer;
        }

        .btn-submit:hover {
            background: #00c6ff;
        }
    </style>
</head>
<body>
    test
    
</body>
</html>
<!--------------------------ส่วนท้าย------------------------>
<?php
/*
 // คำสั่งการ Export ไฟล์เป็น PDF
$html = ob_get_contents();      // เรียกใช้ฟังก์ชัน รับข้อมูลที่จะมาแสดงผล
$a=file_get_contents("http://localhost/attendance/content.php");
$mpdf->WriteHTML($a);
$mpdf->WriteHTML($html);        // รับข้อมูลเนื้อหาที่จะแสดงผลผ่านตัวแปร $html
$mpdf->Output('Report.pdf');  //สร้างไฟล์ PDF ชื่อว่า myReport.pdf
ob_end_flush();                 // ปิดการแสดงผลข้อมูลของไฟล์ HTML ณ จุดนี้
*/
?>

<!--การสร้างลิงค์ เรียกไฟล์ myReport.pdf แสดงผลไฟล์ PDF  -->
<a href="Report.pdf"><button class="btn btn-primary">Export PDF</button> </a>