File manager - Edit - /home/pack/admin/items.php
Back
<?php require_once "../config.php"; require_once "../auth.php"; require_login(); include "header.php"; /* ========================= SweetAlert Helper ========================= */ function swal($title, $text, $icon, $redirect = null) { echo "<script> Swal.fire({ title: '$title', text: '$text', icon: '$icon', confirmButtonText: 'ตกลง' }).then(() => {"; if ($redirect) echo "window.location='$redirect';"; echo "}); </script>"; } /* =================================================================== ฟังก์ชันแปลงวันที่ ENUM → ไทย =================================================================== */ function thaiDay($d) { $map = [ 'monday' => 'จันทร์', 'tuesday' => 'อังคาร', 'wednesday' => 'พุธ', 'thursday' => 'พฤหัสบดี', 'friday' => 'ศุกร์', 'saturday' => 'เสาร์', 'sunday' => 'อาทิตย์' ]; return $map[$d]; } /* =================================================================== สีของวัน =================================================================== */ function dayColor($d) { $color = [ 'monday' => '#0d6efd', 'tuesday' => '#6610f2', 'wednesday' => '#198754', 'thursday' => '#fd7e14', 'friday' => '#dc3545', 'saturday' => '#20c997', 'sunday' => '#6f42c1' ]; return $color[$d]; } /* =================================================================== ตรวจ user_id ที่จะใช้ filter =================================================================== */ if ($ROLE == "user") { $selected_user = $USER_ID; } else { $selected_user = isset($_GET['uid']) ? intval($_GET['uid']) : 0; } /* =================================================================== ADD ITEM (Prevent duplicate day) =================================================================== */ if (isset($_POST['add_item'])) { $uid = ($ROLE == "user") ? $USER_ID : intval($_POST['user_id']); $day = $_POST['day']; $name = trim($_POST['item_name']); // ตรวจว่ามีวันนี้แล้วหรือยัง $chk = $conn->query("SELECT id FROM items WHERE user_id=$uid AND day='$day'"); if ($chk->num_rows > 0) { swal("ซ้ำ!", "ไม่สามารถเพิ่มรายการวันนี้ได้ (มีข้อมูลอยู่แล้ว)", "error"); } else { $stmt = $conn->prepare("INSERT INTO items (user_id, day, item_name) VALUES (?, ?, ?)"); $stmt->bind_param("iss", $uid, $day, $name); $stmt->execute(); swal("สำเร็จ", "เพิ่มรายการสำเร็จ", "success", "items.php?uid=$uid"); } } /* =================================================================== EDIT ITEM (Prevent duplicate day) =================================================================== */ if (isset($_POST['edit_item'])) { $id = intval($_POST['item_id']); $day = $_POST['day']; $name = trim($_POST['item_name']); $r = $conn->query("SELECT user_id FROM items WHERE id=$id")->fetch_assoc(); $uid = $r['user_id']; if ($ROLE == "user" && $uid != $USER_ID) { swal("สิทธิ์ไม่เพียงพอ", "คุณไม่มีสิทธิ์แก้ไขรายการนี้", "error", "items.php"); exit; } // เช็คซ้ำ $chk = $conn->query(" SELECT id FROM items WHERE user_id=$uid AND day='$day' AND id<>$id "); if ($chk->num_rows > 0) { swal("วันซ้ำ!", "ไม่สามารถบันทึกได้ — วันนี้มีรายการอยู่แล้ว", "error"); } else { $stmt = $conn->prepare("UPDATE items SET day=?, item_name=? WHERE id=?"); $stmt->bind_param("ssi", $day, $name, $id); $stmt->execute(); swal("สำเร็จ", "บันทึกข้อมูลเรียบร้อย", "success", "items.php?uid=$uid"); } } /* =================================================================== DELETE ITEM =================================================================== */ if (isset($_GET['del'])) { $id = intval($_GET['del']); $r = $conn->query("SELECT user_id FROM items WHERE id=$id")->fetch_assoc(); if ($ROLE=="user" && $r['user_id'] != $USER_ID) { swal("สิทธิ์ไม่เพียงพอ", "คุณไม่มีสิทธิ์ลบรายการนี้", "error", "items.php"); exit; } $conn->query("DELETE FROM items WHERE id=$id"); swal("สำเร็จ", "ลบรายการเรียบร้อย", "success", "items.php?uid={$r['user_id']}"); } ?> <style> .item-card { background: #fff; border-radius: 12px; padding: 15px; border: 1px solid #e0e0e0; transition: 0.2s; } .item-card:hover { transform: translateY(-4px); box-shadow: 0 4px 18px rgba(0,0,0,0.12); } .day-circle { width: 55px; height: 55px; border-radius: 50%; color: white; text-align: center; line-height: 55px; font-weight: bold; } .user-list-box { padding: 10px; border-radius: 10px; border: 1px solid #e0e0e0; background: #fff; } </style> <h3><i class="bi bi-list-check"></i> รายการสิ่งของประจำวัน</h3> <hr> <?php if ($ROLE != "user"): ?> <h5><i class="bi bi-people"></i> เลือกผู้ใช้</h5> <div class="row mb-4"> <?php $users = $conn->query("SELECT id, fullname, role FROM users ORDER BY fullname"); while ($u = $users->fetch_assoc()): ?> <div class="col-md-3"> <a href="items.php?uid=<?= $u['id'] ?>" class="text-decoration-none text-dark"> <div class="user-list-box mb-2 <?= ($selected_user==$u['id'])?'border-primary':'' ?>"> <strong><?= $u['fullname'] ?></strong><br> <small><?= $u['role'] ?></small> </div> </a> </div> <?php endwhile; ?> </div> <?php if (!$selected_user): ?> <div class="alert alert-info">กรุณาเลือกผู้ใช้ก่อน</div> <?php include "../footer.php"; exit(); ?> <?php endif; ?> <?php else: ?> <h5 class="text-muted"><i class="bi bi-person"></i> ผู้ใช้: <?= $_SESSION['fullname'] ?></h5> <?php endif; ?> <!-- ========== รายการสิ่งของของ USER ที่เลือก ========== --> <?php $sql = " SELECT items.*, users.fullname FROM items JOIN users ON items.user_id = users.id WHERE items.user_id = $selected_user ORDER BY FIELD(day,'monday','tuesday','wednesday','thursday','friday','saturday','sunday'), items.id DESC "; $res = $conn->query($sql); ?> <div class="row g-3 mt-2"> <?php while ($i = $res->fetch_assoc()): ?> <?php $color = dayColor($i['day']); ?> <div class="col-md-6 col-lg-4"> <div class="item-card"> <div class="d-flex"> <div class="day-circle" style="background: <?= $color ?>;"> <?= thaiDay($i['day']) ?> </div> <div class="ms-3 flex-grow-1"> <strong><?= htmlspecialchars($i['item_name']) ?></strong><br> <small class="text-muted"><?= $i['fullname'] ?></small> </div> </div> <div class="text-end mt-3"> <?php if ($ROLE=='admin' || $ROLE=='staff' || $i['user_id']==$USER_ID): ?> <button class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#editModal<?= $i['id'] ?>"> <i class="bi bi-pencil-square"></i> </button> <button onclick="confirmDelete(<?= $i['id'] ?>)" class="btn btn-danger btn-sm"> <i class="bi bi-trash"></i> </button> <?php endif; ?> </div> </div> </div> <!-- SweetAlert Delete Confirm --> <script> function confirmDelete(id){ Swal.fire({ title: "ลบรายการ?", text: "ต้องการลบรายการนี้หรือไม่?", icon: "warning", showCancelButton: true, confirmButtonText: "ลบ", cancelButtonText: "ยกเลิก" }).then((res)=>{ if(res.isConfirmed){ window.location = "items.php?del=" + id + "&uid=<?= $selected_user ?>"; } }); } </script> <!-- EDIT MODAL --> <div class="modal fade" id="editModal<?= $i['id'] ?>"> <div class="modal-dialog"> <div class="modal-content"> <form method="post"> <div class="modal-header"> <h5 class="modal-title">แก้ไขรายการ</h5> <button class="btn-close" data-bs-dismiss="modal"></button> </div> <div class="modal-body"> <input type="hidden" name="item_id" value="<?= $i['id'] ?>"> <label>วัน</label> <select name="day" class="form-select mb-2"> <?php foreach (['monday'=>'จันทร์','tuesday'=>'อังคาร','wednesday'=>'พุธ','thursday'=>'พฤหัสบดี','friday'=>'ศุกร์','saturday'=>'เสาร์','sunday'=>'อาทิตย์'] as $k=>$v): ?> <option value="<?= $k ?>" <?= $i['day']==$k?'selected':'' ?>><?= $v ?></option> <?php endforeach; ?> </select> <label>รายการสิ่งของ</label> <input type="text" name="item_name" class="form-control" value="<?= htmlspecialchars($i['item_name']) ?>" required> </div> <div class="modal-footer"> <button name="edit_item" class="btn btn-success"> <i class="bi bi-save"></i> บันทึก </button> </div> </form> </div> </div> </div> <?php endwhile; ?> </div> <!-- Floating Add Button --> <div class="btn btn-primary rounded-circle" style="position: fixed; bottom:25px; right:25px; width:60px; height:60px; font-size:32px;" data-bs-toggle="modal" data-bs-target="#addModal">+ </div> <?php /* ======================== วันทั้งหมด ======================== */ $all_days = [ 'monday' => 'จันทร์', 'tuesday' => 'อังคาร', 'wednesday' => 'พุธ', 'thursday' => 'พฤหัสบดี', 'friday' => 'ศุกร์', 'saturday' => 'เสาร์', 'sunday' => 'อาทิตย์' ]; /* ======================== วันของ user ที่ใช้ไปแล้ว ======================== */ $used_days = []; $day_q = $conn->query("SELECT day FROM items WHERE user_id=$selected_user"); while ($d = $day_q->fetch_assoc()) { $used_days[] = $d['day']; } ?> <!-- ADD MODAL --> <div class="modal fade" id="addModal"> <div class="modal-dialog"> <div class="modal-content"> <form method="post"> <div class="modal-header"> <h5 class="modal-title">เพิ่มรายการสิ่งของ</h5> <button class="btn-close" data-bs-dismiss="modal"></button> </div> <div class="modal-body"> <?php if ($ROLE != "user"): ?> <label>ผู้ใช้</label> <select name="user_id" class="form-select mb-2"> <?php $u = $conn->query("SELECT id, fullname FROM users ORDER BY fullname"); while ($x = $u->fetch_assoc()): ?> <option value="<?= $x['id'] ?>" <?= ($selected_user==$x['id'])?'selected':'' ?>> <?= $x['fullname'] ?> </option> <?php endwhile; ?> </select> <?php else: ?> <input type="hidden" name="user_id" value="<?= $USER_ID ?>"> <?php endif; ?> <label>วัน</label> <select name="day" class="form-select mb-2" required> <?php foreach ($all_days as $k => $v): ?> <?php if (!in_array($k, $used_days)): ?> <option value="<?= $k ?>"><?= $v ?></option> <?php endif; ?> <?php endforeach; ?> </select> <label>รายการสิ่งของ</label> <input type="text" name="item_name" class="form-control" required> </div> <div class="modal-footer"> <button name="add_item" class="btn btn-primary"> <i class="bi bi-plus-circle"></i> เพิ่มรายการ </button> </div> </form> </div> </div> </div> <?php include "../footer.php"; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.84 |
proxy
|
phpinfo
|
Settings