| Server IP : 104.21.80.248 / Your IP : 172.71.28.155 Web Server : Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30 System : Windows NT WIN-ECQAAA40806 6.2 build 9200 (Windows Server 2012 Standard Edition) i586 User : SYSTEM ( 0) PHP Version : 5.6.30 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Inetpub/www/certificate/ |
Upload File : |
<?php
require 'db.php';
checkSingleSession();
if(!isset($_SESSION['user_id'])) { header("Location: login.php"); exit; }
$eid = isset($_GET['eid']) ? decryptData($_GET['eid']) : 0;
// -------------------------------------------------------------------
// ส่วนประมวลผล AJAX สำหรับโหลดรายชื่อแบบแบ่งหน้าและค้นหา
// -------------------------------------------------------------------
if(isset($_GET['ajax_names']) && $eid) {
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$search = isset($_GET['q']) ? mysqli_real_escape_string($condb, $_GET['q']) : '';
$limit = 10;
$offset = ($page - 1) * $limit;
// สร้างเงื่อนไขการค้นหา
$where = "event_id='$eid'";
if($search != '') {
$where .= " AND nm LIKE '%$search%'";
}
$count_q = mysqli_query($condb, "SELECT COUNT(*) as c FROM cert_names WHERE $where");
$total_rows = mysqli_fetch_assoc($count_q)['c'];
$total_pages = ceil($total_rows / $limit);
$q = mysqli_query($condb, "SELECT * FROM cert_names WHERE $where ORDER BY id DESC LIMIT $offset, $limit");
$html = '';
// กำหนดตัวแปรลำดับเริ่มต้น
$no = $offset + 1;
while($row = mysqli_fetch_assoc($q)) {
$type_txt = "ผู้เข้าอบรม";
$badge_color = "success";
if($row['type'] == '2') { $type_txt = "คณะทำงาน"; $badge_color = "warning text-dark"; }
elseif($row['type'] == '3') { $type_txt = "วิทยากร"; $badge_color = "info text-dark"; }
// เข้ารหัส ID ของรายชื่อเพื่อใช้สร้างลิงก์ดูเกียรติบัตร
$enc_cid = encryptData($row['id']);
$html .= "<tr>
<td class='align-middle text-center fw-bold text-muted'>$no</td>
<td class='align-middle'>
<a href='certi.php?cid={$enc_cid}' target='_blank' class='text-decoration-none fw-bold text-primary' title='คลิกเพื่อดูเกียรติบัตร'>
".htmlspecialchars($row['nm'])." <i class='fas fa-external-link-alt ms-2 small text-muted'></i>
</a>
</td>
<td class='align-middle text-muted small'>".($row['school'] ? htmlspecialchars($row['school']) : '-')."</td>
<td class='align-middle text-center'>".htmlspecialchars($row['cer_id'])."</td>
<td class='align-middle text-center'><span class='badge bg-{$badge_color}'>{$type_txt}</span></td>
<td class='align-middle text-center'>
<button type='button' class='btn btn-sm btn-warning' onclick=\"openEditModal({$row['id']}, '".htmlspecialchars($row['nm'], ENT_QUOTES)."', '".htmlspecialchars($row['school'], ENT_QUOTES)."', '".htmlspecialchars($row['cer_id'], ENT_QUOTES)."', '{$row['type']}')\"><i class='fas fa-edit'></i></button>
<a href='manage_event.php?eid=".encryptData($eid)."&del_name={$row['id']}' class='btn btn-sm btn-danger' onclick=\"return confirm('ยืนยันการลบรายชื่อ {$row['nm']} ?');\"><i class='fas fa-trash'></i></a>
</td>
</tr>";
$no++;
}
if(mysqli_num_rows($q) == 0) {
$html = "<tr><td colspan='6' class='text-center py-4 text-muted'>ไม่พบข้อมูลรายชื่อ</td></tr>";
}
echo json_encode([
'html' => $html,
'pagination' => createPagination($total_pages, $page, 'loadNames')
]);
exit;
}
$msg = '';
$msgType = '';
// -------------------------------------------------------------------
// ส่วนที่ 1: บันทึก/แก้ไข ข้อมูลกิจกรรมหลัก
// -------------------------------------------------------------------
if(isset($_POST['save_info'])) {
$title = mysqli_real_escape_string($condb, $_POST['event_title']);
$date = mysqli_real_escape_string($condb, $_POST['event_date']);
$cert_num_style = mysqli_real_escape_string($condb, $_POST['cert_num_style']);
$show_school = (int)$_POST['show_school'];
$uid = $_SESSION['user_id'];
if($eid) {
mysqli_query($condb, "UPDATE cert_events SET
event_title='$title',
event_date='$date',
cert_num_style='$cert_num_style',
show_school='$show_school'
WHERE event_id='$eid'");
$msg = "อัปเดตข้อมูลกิจกรรมเรียบร้อยแล้ว";
$msgType = "success";
} else {
mysqli_query($condb, "INSERT INTO cert_events
(event_title, event_date, user_id, pos_name_y, pos_cert_x, pos_cert_y, font_size_name, font_color_name, font_weight_name, font_size_cert, font_color_cert, font_weight_cert, cert_num_style, show_school, pos_school_y, font_size_school, font_color_school, font_weight_school, font_family)
VALUES ('$title', '$date', '$uid', 44, 200, 10, 50, '#000000', 'bold', 16, '#000000', 'normal', '$cert_num_style', '$show_school', 55, 40, '#000000', 'normal', 'sarabun')");
$eid = mysqli_insert_id($condb);
header("Location: manage_event.php?eid=".encryptData($eid)."&msg=saved");
exit;
}
}
// -------------------------------------------------------------------
// ส่วนที่ 2: บันทึก/แก้ไข ตั้งค่าฟอนต์ พิกัด ขนาด สี และความหนาตัวอักษร
// -------------------------------------------------------------------
if(isset($_POST['save_position']) && $eid) {
$font_family = mysqli_real_escape_string($condb, $_POST['font_family']);
$pos_name_y = (int)$_POST['pos_name_y'];
$pos_cert_x = (int)$_POST['pos_cert_x'];
$pos_cert_y = (int)$_POST['pos_cert_y'];
$font_size_name = (int)$_POST['font_size_name'];
$font_color_name = mysqli_real_escape_string($condb, $_POST['font_color_name']);
$font_weight_name = mysqli_real_escape_string($condb, $_POST['font_weight_name']);
$font_size_cert = (int)$_POST['font_size_cert'];
$font_color_cert = mysqli_real_escape_string($condb, $_POST['font_color_cert']);
$font_weight_cert = mysqli_real_escape_string($condb, $_POST['font_weight_cert']);
$pos_school_y = (int)$_POST['pos_school_y'];
$font_size_school = (int)$_POST['font_size_school'];
$font_color_school = mysqli_real_escape_string($condb, $_POST['font_color_school']);
$font_weight_school = mysqli_real_escape_string($condb, $_POST['font_weight_school']);
mysqli_query($condb, "UPDATE cert_events SET
font_family='$font_family',
pos_name_y='$pos_name_y',
pos_cert_x='$pos_cert_x',
pos_cert_y='$pos_cert_y',
font_size_name='$font_size_name',
font_color_name='$font_color_name',
font_weight_name='$font_weight_name',
font_size_cert='$font_size_cert',
font_color_cert='$font_color_cert',
font_weight_cert='$font_weight_cert',
pos_school_y='$pos_school_y',
font_size_school='$font_size_school',
font_color_school='$font_color_school',
font_weight_school='$font_weight_school'
WHERE event_id='$eid'");
$msg = "อัปเดตฟอนต์ พิกัด ขนาด สี และความหนาตัวอักษรเรียบร้อยแล้ว";
$msgType = "success";
}
// -------------------------------------------------------------------
// ส่วนที่ 3: อัปโหลด Template ทั้ง 3 แบบ
// -------------------------------------------------------------------
if(isset($_POST['save_template']) && $eid) {
$uploaded = 0;
for($i = 1; $i <= 3; $i++) {
$input_name = 'template_' . $i;
if(isset($_FILES[$input_name]) && $_FILES[$input_name]['size'] > 0) {
$ext = strtolower(pathinfo($_FILES[$input_name]['name'], PATHINFO_EXTENSION));
if(in_array($ext, ['jpg','jpeg','png'])) {
if(!is_dir("img")) mkdir("img", 0777, true);
$bg_name = "bg_".$eid."_type".$i."_".time().".".$ext;
if(move_uploaded_file($_FILES[$input_name]['tmp_name'], "img/".$bg_name)) {
$old_q = mysqli_query($condb, "SELECT template_bg_$i FROM cert_events WHERE event_id='$eid'");
$old_file = mysqli_fetch_assoc($old_q)['template_bg_'.$i];
if(!empty($old_file) && file_exists("img/".$old_file)) { @unlink("img/".$old_file); }
mysqli_query($condb, "UPDATE cert_events SET template_bg_$i='$bg_name' WHERE event_id='$eid'");
$uploaded++;
}
}
}
}
if($uploaded > 0) {
$msg = "อัปโหลด Template ใหม่เรียบร้อยแล้ว จำนวน $uploaded รายการ";
$msgType = "success";
} else {
$msg = "ยังไม่ได้เลือกไฟล์ใหม่ หรือไฟล์ไม่รองรับ (.jpg, .png)";
$msgType = "warning";
}
}
// -------------------------------------------------------------------
// ส่วนที่ 4: นำเข้ารายชื่อผ่านไฟล์ Excel
// -------------------------------------------------------------------
if(isset($_POST['upload_excel']) && $eid) {
if(isset($_FILES['excel_file']) && $_FILES['excel_file']['size'] > 0) {
$fileType = strtolower(pathinfo($_FILES['excel_file']['name'], PATHINFO_EXTENSION));
if($fileType == "xlsx" || $fileType == "xls") {
require_once 'Classes/PHPExcel.php';
require_once 'Classes/PHPExcel/IOFactory.php';
$file = $_FILES['excel_file']['tmp_name'];
try {
$inputFileType = PHPExcel_IOFactory::identify($file);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($file);
$rows = $objPHPExcel->getActiveSheet()->toArray();
$success = 0;
for ($i = 1; $i < count($rows); $i++) {
if (!empty(trim($rows[$i][0])) && !empty(trim($rows[$i][1]))) {
$nm = mysqli_real_escape_string($condb, trim($rows[$i][0]));
$cer_id = mysqli_real_escape_string($condb, trim($rows[$i][1]));
$type = (isset($rows[$i][2]) && trim($rows[$i][2]) !== '') ? mysqli_real_escape_string($condb, trim($rows[$i][2])) : '1';
$school = isset($rows[$i][3]) ? mysqli_real_escape_string($condb, trim($rows[$i][3])) : '';
mysqli_query($condb, "INSERT INTO cert_names (event_id, nm, cer_id, type, school) VALUES ('$eid', '$nm', '$cer_id', '$type', '$school')");
$success++;
}
}
$msg = "นำเข้ารายชื่อจาก Excel สำเร็จ $success รายการ";
$msgType = "success";
} catch(Exception $e) {
$msg = "เกิดข้อผิดพลาดในการอ่านไฟล์ Excel: " . $e->getMessage();
$msgType = "danger";
}
} else {
$msg = "ระบบรองรับเฉพาะไฟล์นามสกุล .xls หรือ .xlsx เท่านั้นครับ";
$msgType = "danger";
}
}
}
// -------------------------------------------------------------------
// ส่วนที่ 5: เพิ่มรายชื่อแบบกรอกเองทีละคน
// -------------------------------------------------------------------
if(isset($_POST['add_manual']) && $eid) {
$nm = mysqli_real_escape_string($condb, trim($_POST['manual_nm']));
$cer_id = mysqli_real_escape_string($condb, trim($_POST['manual_cer_id']));
$type = mysqli_real_escape_string($condb, trim($_POST['manual_type']));
$school = mysqli_real_escape_string($condb, trim($_POST['manual_school']));
if(!empty($nm) && !empty($cer_id)) {
mysqli_query($condb, "INSERT INTO cert_names (event_id, nm, cer_id, type, school) VALUES ('$eid', '$nm', '$cer_id', '$type', '$school')");
$msg = "เพิ่มรายชื่อ $nm เรียบร้อยแล้ว";
$msgType = "success";
} else {
$msg = "กรุณากรอกชื่อและเลขที่เกียรติบัตรให้ครบถ้วน";
$msgType = "danger";
}
}
// -------------------------------------------------------------------
// ส่วนที่ 6: การแก้ไขรายชื่อ (Edit Name)
// -------------------------------------------------------------------
if(isset($_POST['edit_name_submit']) && $eid) {
$nid = (int)$_POST['edit_nid'];
$nm = mysqli_real_escape_string($condb, trim($_POST['edit_nm']));
$cer_id = mysqli_real_escape_string($condb, trim($_POST['edit_cer_id']));
$type = mysqli_real_escape_string($condb, trim($_POST['edit_type']));
$school = mysqli_real_escape_string($condb, trim($_POST['edit_school']));
mysqli_query($condb, "UPDATE cert_names SET nm='$nm', cer_id='$cer_id', type='$type', school='$school' WHERE id='$nid' AND event_id='$eid'");
$msg = "แก้ไขข้อมูลรายชื่อเรียบร้อยแล้ว";
$msgType = "success";
}
// -------------------------------------------------------------------
// การลบรายชื่อ (GET Method)
// -------------------------------------------------------------------
if(isset($_GET['del_name']) && $eid) {
$nid = (int)$_GET['del_name'];
mysqli_query($condb, "DELETE FROM cert_names WHERE id='$nid' AND event_id='$eid'");
header("Location: manage_event.php?eid=".encryptData($eid)."&msg=deleted");
exit;
}
if(isset($_GET['msg'])) {
if($_GET['msg'] == 'saved') { $msg = "บันทึกข้อมูลเริ่มต้นสำเร็จ เริ่มตั้งค่าและเพิ่มรายชื่อได้เลยครับ"; $msgType = "success"; }
if($_GET['msg'] == 'deleted') { $msg = "ลบรายชื่อเรียบร้อยแล้ว"; $msgType = "success"; }
}
// -------------------------------------------------------------------
// ดึงข้อมูลกิจกรรมล่าสุดมาแสดงผล
// -------------------------------------------------------------------
$event = [
'event_title'=>'', 'event_date'=>date('Y-m-d'),
'template_bg_1'=>'', 'template_bg_2'=>'', 'template_bg_3'=>'',
'font_family'=>'sarabun',
'pos_name_y'=>44, 'pos_cert_x'=>200, 'pos_cert_y'=>10,
'font_size_name'=>50, 'font_color_name'=>'#000000', 'font_weight_name'=>'bold',
'font_size_cert'=>16, 'font_color_cert'=>'#000000', 'font_weight_cert'=>'normal',
'cert_num_style'=>'thai', 'show_school'=>0, 'pos_school_y'=>55, 'font_size_school'=>40, 'font_color_school'=>'#000000', 'font_weight_school'=>'normal'
];
if($eid) {
$q = mysqli_query($condb, "SELECT * FROM cert_events WHERE event_id='$eid'");
$event = mysqli_fetch_assoc($q);
if(!$event) { header("Location: dashboard.php"); exit; }
}
require 'layout.php';
renderHeader($eid ? "แก้ไขเกียรติบัตร" : "เพิ่มเกียรติบัตรใหม่");
?>
<div class="row justify-content-center mt-4 mb-5">
<div class="col-lg-10">
<div class="d-flex justify-content-between align-items-center mb-3">
<h3 class="fw-bold text-dark m-0"><?php echo $eid ? 'รายละเอียดกิจกรรม' : 'สร้างเรื่องใหม่'; ?></h3>
<a href="dashboard.php" class="btn btn-secondary px-4 rounded-pill"><i class="fas fa-arrow-left"></i> กลับหน้ารวม</a>
</div>
<?php if($msg): ?>
<div class="alert alert-<?php echo $msgType; ?> alert-dismissible fade show shadow-sm">
<i class="fas <?php echo $msgType == 'success' ? 'fa-check-circle' : 'fa-exclamation-circle'; ?>"></i> <?php echo $msg; ?>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<div class="card p-4 mb-4 shadow-sm border-top border-4 border-primary">
<h5 class="fw-bold text-primary mb-3"><i class="fas fa-info-circle"></i> 1. ข้อมูลกิจกรรมและการแสดงผลพื้นฐาน</h5>
<form method="post">
<div class="row">
<div class="col-md-8 mb-3">
<label class="form-label fw-bold">ชื่อเรื่องเกียรติบัตร</label>
<input type="text" name="event_title" class="form-control" required value="<?php echo htmlspecialchars($event['event_title']); ?>">
</div>
<div class="col-md-4 mb-3">
<label class="form-label fw-bold">วันที่ออกเกียรติบัตร</label>
<input type="date" name="event_date" class="form-control" required value="<?php echo $event['event_date']; ?>">
</div>
</div>
<div class="row mt-2 bg-light p-3 rounded mx-0 border">
<div class="col-md-6 mb-3 mb-md-0">
<label class="form-label fw-bold text-dark">รูปแบบเลขที่เกียรติบัตร</label>
<div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="cert_num_style" id="num_thai" value="thai" <?php echo ($event['cert_num_style']=='thai' || !$eid) ? 'checked' : ''; ?>>
<label class="form-check-label" for="num_thai">เลขไทย (เช่น ๑๒๓)</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="cert_num_style" id="num_arabic" value="arabic" <?php echo ($event['cert_num_style']=='arabic') ? 'checked' : ''; ?>>
<label class="form-check-label" for="num_arabic">เลขอารบิก (เช่น 123)</label>
</div>
</div>
</div>
<div class="col-md-6">
<label class="form-label fw-bold text-dark">แสดงชื่อโรงเรียน/หน่วยงานหรือไม่?</label>
<div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="show_school" id="sch_hide" value="0" <?php echo ($event['show_school']==0 || !$eid) ? 'checked' : ''; ?>>
<label class="form-check-label" for="sch_hide">ไม่แสดง</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="show_school" id="sch_show" value="1" <?php echo ($event['show_school']==1) ? 'checked' : ''; ?>>
<label class="form-check-label" for="sch_show">แสดง (ด้านล่างชื่อ)</label>
</div>
</div>
</div>
</div>
<div class="text-end mt-3">
<button type="submit" name="save_info" class="btn btn-primary px-4 fw-bold"><i class="fas fa-save"></i> <?php echo $eid ? 'อัปเดตข้อมูลกิจกรรม' : 'บันทึกและดำเนินการต่อ'; ?></button>
</div>
</form>
</div>
<?php if($eid): ?>
<div class="card p-4 mb-4 shadow-sm border-top border-4 border-warning">
<h5 class="fw-bold text-warning text-dark"><i class="fas fa-arrows-alt"></i> 2. ตั้งค่าฟอนต์ ความหนา ตำแหน่ง และขนาดตัวอักษร</h5>
<form method="post">
<div class="row mt-2">
<div class="col-md-12 mb-4 border-bottom pb-3">
<label class="form-label fw-bold text-dark"><i class="fas fa-font text-primary"></i> เลือกรูปแบบฟอนต์ (Google Fonts)</label>
<select name="font_family" class="form-select border-primary shadow-sm" style="max-width: 400px;">
<option value="sarabun" <?php echo ($event['font_family']=='sarabun' || !$eid) ? 'selected' : ''; ?>>Sarabun (สารบรรณ มาตรฐานราชการ)</option>
<option value="angsa" <?php echo ($event['font_family']=='angsa') ? 'selected' : ''; ?>>Thasadith (ทรงทางการ คล้าย Angsana)</option>
<option value="charmonman" <?php echo ($event['font_family']=='charmonman') ? 'selected' : ''; ?>>Charmonman (ตัวอักษรคัดลายมือโบราณ/อ่อนช้อย)</option>
<option value="kanit" <?php echo ($event['font_family']=='kanit') ? 'selected' : ''; ?>>Kanit (ตัวอักษรสมัยใหม่/ไม่มีหัว)</option>
</select>
</div>
<div class="col-md-12 fw-bold text-primary small mb-2">ตั้งค่า "ชื่อ-สกุล"</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">สีฟอนต์ (คลิกเลือกสี)</label>
<input type="color" name="font_color_name" class="form-control form-control-color w-100" value="<?php echo $event['font_color_name']; ?>">
</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">ความหนาอักษร</label>
<select name="font_weight_name" class="form-select border-primary">
<option value="bold" <?php echo ($event['font_weight_name']=='bold' || !$eid) ? 'selected' : ''; ?>>ตัวหนา (Bold)</option>
<option value="normal" <?php echo ($event['font_weight_name']=='normal') ? 'selected' : ''; ?>>ตัวธรรมดา (Regular)</option>
</select>
</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">ขนาด Font</label>
<input type="number" name="font_size_name" class="form-control text-center border-primary" value="<?php echo $event['font_size_name']; ?>">
</div>
<div class="col-md-3 mb-3">
<label class="form-label small text-muted">ตำแหน่ง แกน Y (mm)</label>
<input type="number" name="pos_name_y" class="form-control text-center" value="<?php echo $event['pos_name_y']; ?>">
</div>
<div class="col-md-12 fw-bold text-info small mb-2 border-top pt-3">ตั้งค่า "ชื่อโรงเรียน/หน่วยงาน"</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">สีฟอนต์ (คลิกเลือกสี)</label>
<input type="color" name="font_color_school" class="form-control form-control-color w-100" value="<?php echo $event['font_color_school']; ?>">
</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">ความหนาอักษร</label>
<select name="font_weight_school" class="form-select border-info">
<option value="normal" <?php echo ($event['font_weight_school']=='normal' || !$eid) ? 'selected' : ''; ?>>ตัวธรรมดา (Regular)</option>
<option value="bold" <?php echo ($event['font_weight_school']=='bold') ? 'selected' : ''; ?>>ตัวหนา (Bold)</option>
</select>
</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">ขนาด Font</label>
<input type="number" name="font_size_school" class="form-control text-center border-info" value="<?php echo $event['font_size_school']; ?>">
</div>
<div class="col-md-3 mb-3">
<label class="form-label small text-muted">ตำแหน่ง แกน Y (ต้องมากกว่าชื่อ)</label>
<input type="number" name="pos_school_y" class="form-control text-center" value="<?php echo $event['pos_school_y']; ?>">
</div>
<div class="col-md-12 fw-bold text-success small mb-2 border-top pt-3">ตั้งค่า "เลขที่เกียรติบัตร"</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">สีฟอนต์ (คลิกเลือกสี)</label>
<input type="color" name="font_color_cert" class="form-control form-control-color w-100" value="<?php echo $event['font_color_cert']; ?>">
</div>
<div class="col-md-3 mb-2">
<label class="form-label small text-muted">ความหนาอักษร</label>
<select name="font_weight_cert" class="form-select border-success">
<option value="normal" <?php echo ($event['font_weight_cert']=='normal' || !$eid) ? 'selected' : ''; ?>>ตัวธรรมดา (Regular)</option>
<option value="bold" <?php echo ($event['font_weight_cert']=='bold') ? 'selected' : ''; ?>>ตัวหนา (Bold)</option>
</select>
</div>
<div class="col-md-2 mb-2">
<label class="form-label small text-muted">ขนาด Font</label>
<input type="number" name="font_size_cert" class="form-control text-center border-success" value="<?php echo $event['font_size_cert']; ?>">
</div>
<div class="col-md-2 mb-2">
<label class="form-label small text-muted">ตำแหน่ง แกน X (mm)</label>
<input type="number" name="pos_cert_x" class="form-control text-center" value="<?php echo $event['pos_cert_x']; ?>">
</div>
<div class="col-md-2 mb-3">
<label class="form-label small text-muted">ตำแหน่ง แกน Y (mm)</label>
<input type="number" name="pos_cert_y" class="form-control text-center" value="<?php echo $event['pos_cert_y']; ?>">
</div>
</div>
<div class="text-end mt-2">
<button type="submit" name="save_position" class="btn btn-warning text-dark px-4 fw-bold"><i class="fas fa-save"></i> อัปเดตการตั้งค่าตัวอักษร</button>
</div>
</form>
</div>
<div class="card p-4 mb-4 shadow-sm border-top border-4 border-info">
<h5 class="fw-bold text-info text-dark"><i class="fas fa-images"></i> 3. อัปโหลด Template พื้นหลัง <small class="text-muted fw-normal">(A4 แนวนอน 297x210 mm)</small></h5>
<form method="post" enctype="multipart/form-data">
<div class="row mt-3">
<div class="col-md-4 mb-3">
<div class="p-3 border rounded bg-light text-center h-100">
<h6 class="fw-bold text-success">ประเภท 1 (ผู้เข้าอบรม)</h6>
<input type="file" name="template_1" class="form-control form-control-sm mb-2" accept=".jpg,.jpeg,.png">
<?php if($event['template_bg_1']): ?>
<span class="badge bg-success mb-2"><i class="fas fa-check"></i> มี Template แล้ว</span><br>
<a href="img/<?php echo $event['template_bg_1']; ?>" target="_blank" class="btn btn-outline-success btn-sm">ดูรูปภาพปัจจุบัน</a>
<?php else: ?>
<span class="badge bg-secondary"><i class="fas fa-times"></i> ยังไม่มีรูปภาพ</span>
<?php endif; ?>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="p-3 border rounded bg-light text-center h-100">
<h6 class="fw-bold text-warning">ประเภท 2 (คณะทำงาน)</h6>
<input type="file" name="template_2" class="form-control form-control-sm mb-2" accept=".jpg,.jpeg,.png">
<?php if($event['template_bg_2']): ?>
<span class="badge bg-success mb-2"><i class="fas fa-check"></i> มี Template แล้ว</span><br>
<a href="img/<?php echo $event['template_bg_2']; ?>" target="_blank" class="btn btn-outline-warning btn-sm">ดูรูปภาพปัจจุบัน</a>
<?php else: ?>
<span class="badge bg-secondary"><i class="fas fa-times"></i> ยังไม่มีรูปภาพ</span>
<?php endif; ?>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="p-3 border rounded bg-light text-center h-100">
<h6 class="fw-bold text-info">ประเภท 3 (วิทยากร)</h6>
<input type="file" name="template_3" class="form-control form-control-sm mb-2" accept=".jpg,.jpeg,.png">
<?php if($event['template_bg_3']): ?>
<span class="badge bg-success mb-2"><i class="fas fa-check"></i> มี Template แล้ว</span><br>
<a href="img/<?php echo $event['template_bg_3']; ?>" target="_blank" class="btn btn-outline-info btn-sm">ดูรูปภาพปัจจุบัน</a>
<?php else: ?>
<span class="badge bg-secondary"><i class="fas fa-times"></i> ยังไม่มีรูปภาพ</span>
<?php endif; ?>
</div>
</div>
</div>
<div class="text-end mt-2">
<button type="submit" name="save_template" class="btn btn-info text-white px-4 fw-bold"><i class="fas fa-upload"></i> อัปเดต Template</button>
</div>
</form>
</div>
<div class="row">
<div class="col-md-6 mb-4">
<div class="card p-4 h-100 shadow-sm border-top border-4 border-success">
<h5 class="fw-bold text-success"><i class="fas fa-file-excel"></i> 4. นำเข้ารายชื่อจาก Excel</h5>
<p class="text-muted small">A: ชื่อ-สกุล | B: รหัส | C: ประเภท (1,2,3) | <strong>D: โรงเรียน (ถ้ามี)</strong></p>
<form method="post" enctype="multipart/form-data">
<input type="file" name="excel_file" class="form-control mb-3" accept=".xls,.xlsx" required>
<div class="d-flex justify-content-between">
<a href="sample.xlsx" class="btn btn-sm btn-outline-secondary" download><i class="fas fa-download"></i> ไฟล์ตัวอย่าง</a>
<button type="submit" name="upload_excel" class="btn btn-success fw-bold"><i class="fas fa-upload"></i> อัปโหลด Excel</button>
</div>
</form>
</div>
</div>
<div class="col-md-6 mb-4">
<div class="card p-4 h-100 shadow-sm border-top border-4 border-secondary">
<h5 class="fw-bold text-secondary"><i class="fas fa-user-plus"></i> 5. เพิ่มรายชื่อ (กรอกเอง)</h5>
<form method="post">
<div class="mb-2">
<input type="text" name="manual_nm" class="form-control" placeholder="ชื่อ - นามสกุล" required>
</div>
<div class="mb-2">
<input type="text" name="manual_school" class="form-control" placeholder="โรงเรียน / หน่วยงาน (ถ้ามี)">
</div>
<div class="row">
<div class="col-6 mb-3">
<input type="text" name="manual_cer_id" class="form-control" placeholder="เลขที่ (เช่น 001)" required>
</div>
<div class="col-6 mb-3">
<select name="manual_type" class="form-select">
<option value="1">ประเภท 1 (ผู้อบรม)</option>
<option value="2">ประเภท 2 (คณะทำงาน)</option>
<option value="3">ประเภท 3 (วิทยากร)</option>
</select>
</div>
</div>
<div class="text-end">
<button type="submit" name="add_manual" class="btn btn-secondary text-white fw-bold"><i class="fas fa-plus"></i> เพิ่มรายชื่อ</button>
</div>
</form>
</div>
</div>
</div>
<div class="card p-4 shadow-sm border-top border-4 border-dark">
<?php
$c_q = mysqli_query($condb, "SELECT COUNT(*) as c FROM cert_names WHERE event_id='$eid'");
$c_count = mysqli_fetch_assoc($c_q)['c'];
?>
<div class="d-flex flex-column flex-md-row justify-content-between align-items-center mb-3">
<h5 class="fw-bold text-dark m-0 mb-3 mb-md-0"><i class="fas fa-list-ul"></i> รายชื่อทั้งหมดในกิจกรรมนี้ (รวม <?php echo $c_count; ?> คน)</h5>
<div class="input-group" style="max-width: 300px;">
<span class="input-group-text bg-white"><i class="fas fa-search text-muted"></i></span>
<input type="text" id="nameSearchBox" class="form-control" placeholder="ค้นหาจากชื่อ..." onkeyup="loadNames(1)">
</div>
</div>
<div class="table-responsive mt-3">
<table class="table table-bordered table-hover">
<thead class="table-light text-center">
<tr>
<th width="8%">ที่</th>
<th>ชื่อ - นามสกุล</th>
<th>โรงเรียน/หน่วยงาน</th>
<th width="15%">เลขที่เกียรติบัตร</th>
<th width="15%">ประเภท</th>
<th width="12%">จัดการ</th>
</tr>
</thead>
<tbody id="nameList">
<tr><td colspan="6" class="text-center py-5"><i class="fas fa-spinner fa-spin fa-2x text-primary"></i> <span class="d-block mt-2 text-muted">กำลังโหลดข้อมูล...</span></td></tr>
</tbody>
</table>
</div>
<div id="namePagination" class="mt-3"></div>
</div>
<?php endif; ?>
</div>
</div>
<div class="modal fade" id="editNameModal" tabindex="-1" aria-labelledby="editNameModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-warning">
<h5 class="modal-title fw-bold text-dark" id="editNameModalLabel"><i class="fas fa-edit"></i> แก้ไขข้อมูลรายชื่อ</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="post">
<div class="modal-body">
<input type="hidden" name="edit_nid" id="edit_nid">
<div class="mb-3">
<label class="form-label fw-bold">ชื่อ - นามสกุล</label>
<input type="text" name="edit_nm" id="edit_nm" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label fw-bold">โรงเรียน / หน่วยงาน</label>
<input type="text" name="edit_school" id="edit_school" class="form-control">
</div>
<div class="row">
<div class="col-6 mb-3">
<label class="form-label fw-bold">เลขที่เกียรติบัตร</label>
<input type="text" name="edit_cer_id" id="edit_cer_id" class="form-control" required>
</div>
<div class="col-6 mb-3">
<label class="form-label fw-bold">ประเภท</label>
<select name="edit_type" id="edit_type" class="form-select">
<option value="1">ประเภท 1 (ผู้อบรม)</option>
<option value="2">ประเภท 2 (คณะทำงาน)</option>
<option value="3">ประเภท 3 (วิทยากร)</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">ยกเลิก</button>
<button type="submit" name="edit_name_submit" class="btn btn-warning fw-bold text-dark"><i class="fas fa-save"></i> บันทึกการแก้ไข</button>
</div>
</form>
</div>
</div>
</div>
<script>
let nameTimeout;
function loadNames(page) {
clearTimeout(nameTimeout);
nameTimeout = setTimeout(() => {
let q = document.getElementById('nameSearchBox') ? document.getElementById('nameSearchBox').value : '';
fetch('manage_event.php?ajax_names=1&eid=<?php echo isset($_GET['eid']) ? urlencode($_GET['eid']) : ''; ?>&page=' + page + '&q=' + encodeURIComponent(q))
.then(res => res.json())
.then(data => {
document.getElementById('nameList').innerHTML = data.html;
document.getElementById('namePagination').innerHTML = data.pagination;
});
}, 300);
}
<?php if($eid): ?>
document.addEventListener('DOMContentLoaded', () => loadNames(1));
<?php endif; ?>
function openEditModal(id, name, school, cer_id, type) {
document.getElementById('edit_nid').value = id;
document.getElementById('edit_nm').value = name;
document.getElementById('edit_school').value = school;
document.getElementById('edit_cer_id').value = cer_id;
document.getElementById('edit_type').value = type;
var editModal = new bootstrap.Modal(document.getElementById('editNameModal'));
editModal.show();
}
</script>
<?php renderFooter(); ?>