File manager - Edit - /var/www/order.cmtc.ac.th/showitem.php
Back
<?php session_start(); include('config/db.php'); $id = intval($_GET['id']); $prod = $conn->query("SELECT * FROM products WHERE id=$id")->fetch_assoc(); if(!$prod){ header("Location: index.php"); exit; } // ✅ ดึงสถานะระบบจอง $setting_booking = $conn->query("SELECT setting_value FROM settings WHERE setting_key='booking_status'")->fetch_assoc(); $booking_status = $setting_booking['setting_value'] ?? 'on'; // ✅ เพิ่ม field detail ถ้ายังไม่มี if(!isset($prod['detail'])) $prod['detail'] = 'ยังไม่มีรายละเอียด'; // ✅ ตรวจสอบสถานะ Pre Order $setting_preorder = $conn->query("SELECT setting_value FROM settings WHERE setting_key='pre_order_status'")->fetch_assoc(); $pre_order_status = $setting_preorder['setting_value'] ?? 'off'; $can_preorder = ($pre_order_status == 'on'); // ✅ ดึงจำนวนที่ถูกจองแล้ว $q = $conn->query(" SELECT SUM(i.qty) AS total FROM order_items i JOIN orders o ON o.id = i.order_id WHERE i.product_id = {$prod['id']} AND i.confirm_status = 'ยืนยัน' AND i.item_status = 'ปกติ' "); $count_ordered = 0; if($q && $r = $q->fetch_assoc()) { $count_ordered = intval($r['total']); } // ✅ คำนวณเปอร์เซ็นต์การจอง และกำหนดสีของ progress bar $total = $prod['stock'] + $count_ordered; $percent = ($total > 0) ? round(($count_ordered / $total) * 100) : 0; if ($percent <= 30) { $barColor = '#28a745'; // เขียว } elseif ($percent <= 70) { $barColor = '#ffc107'; // เหลือง } else { $barColor = '#dc3545'; // แดง } // ✅ เพิ่มสินค้าเข้าตะกร้า (เฉพาะเมื่อระบบเปิดจอง) if($booking_status == 'on' && isset($_POST['add_to_cart'])){ $pid = intval($_POST['product_id']); $qty = intval($_POST['qty']); $p = $conn->query("SELECT stock FROM products WHERE id=$pid")->fetch_assoc(); if($p){ if($p['stock'] > 0 || $can_preorder){ if(!isset($_SESSION['cart'][$pid])){ $_SESSION['cart'][$pid] = $qty; } else { $_SESSION['cart'][$pid] += $qty; } header("Location: showitem.php?id=$pid&cart_added=1"); exit; } else { header("Location: showitem.php?id=$pid&out_of_stock=1"); exit; } } } // ✅ นับจำนวนสินค้าในตะกร้า $cart_count = 0; if(isset($_SESSION['cart'])) { foreach($_SESSION['cart'] as $qty) { $cart_count += $qty; } } ?> <!DOCTYPE html> <html lang="th"> <head> <meta charset="UTF-8"> <title><?=$prod['name']?></title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/lightbox2@2.11.4/dist/css/lightbox.min.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Kanit:wght@300;400;500;600&display=swap" rel="stylesheet"> <style> body {font-family:'Kanit',sans-serif;background:#fafafa;} .detail-card {border-radius:15px;box-shadow:0 2px 8px rgba(0,0,0,0.1);} .image-row {display:flex;justify-content:center;align-items:flex-start;gap:20px;flex-wrap:wrap;} .image-box {flex:0 1 45%;text-align:center;} .img-thumb {width:100%;border-radius:12px;cursor:pointer;transition:transform 0.2s ease;} .img-thumb:hover {transform:scale(1.05);} .img-label {font-size:14px;text-align:center;margin-top:6px;color:#555;} .qty-group {display:flex;align-items:center;gap:8px;} .qty-btn { width:32px;height:32px;border:1px solid #ccc;border-radius:6px;background:#fff; font-weight:bold;cursor:pointer;transition:.2s; } .qty-btn:hover {background:#eee;} .modal-content {border-radius:16px;} /* ✅ progress bar */ .progress { height: 8px; border-radius: 6px; background-color: #e9ecef; margin-top: 8px; overflow: hidden; } .progress-bar { transition: width 0.6s ease; } </style> </head> <body> <?php include('template_user_header.php'); ?> <div class="container py-5"> <div class="row g-4 align-items-start detail-card bg-white p-4"> <!-- ✅ คอลัมน์รูป --> <div class="col-md-6 text-center"> <div class="image-row"> <?php if($prod['img1']): ?> <div class="image-box"> <a href="uploads/products/<?=$prod['img1']?>" data-lightbox="product<?=$prod['id']?>" data-title="ด้านหน้า: <?=$prod['name']?>"> <img src="uploads/products/<?=$prod['img1']?>" class="img-thumb" alt="ด้านหน้า"> </a> <div class="img-label">ด้านหน้า</div> </div> <?php endif; ?> <?php if($prod['img2']): ?> <div class="image-box"> <a href="uploads/products/<?=$prod['img2']?>" data-lightbox="product<?=$prod['id']?>" data-title="ด้านหลัง: <?=$prod['name']?>"> <img src="uploads/products/<?=$prod['img2']?>" class="img-thumb" alt="ด้านหลัง"> </a> <div class="img-label">ด้านหลัง</div> </div> <?php endif; ?> </div> </div> <!-- ✅ คอลัมน์รายละเอียด --> <div class="col-md-6"> <h3 class="fw-bold mb-2"><?=$prod['name']?></h3> <p class="fs-5 text-danger mb-2">ราคา <?=number_format($prod['price'],2)?> บาท</p> <p class="text-secondary mb-3"><?=$prod['detail']?></p> <?php if($prod['stock'] > 0): ?> <p><b>เหรียญคงเหลือ:</b> <?=$prod['stock']?> เหรียญ</p> <p><b>เหรียญจองแล้ว:</b> <?=$count_ordered?> เหรียญ</p> <!-- ✅ Progress Bar --> <div class="progress"> <div class="progress-bar" role="progressbar" style="width: <?=$percent?>%; background-color: <?=$barColor?>;" aria-valuenow="<?=$percent?>" aria-valuemin="0" aria-valuemax="100"> </div> </div> <?php elseif($can_preorder): ?> <p class="text-warning"><b>Pre Order</b></p> <?php else: ?> <p class="text-danger"><b>เหรียญหมด</b></p> <?php endif; ?> <!-- ✅ ถ้าระบบปิดการจอง --> <?php if($booking_status == 'off'): ?> <div class="alert alert-danger mt-3 text-center"> ⛔ ขณะนี้ระบบปิดรับการจองเหรียญ </div> <?php endif; ?> <!-- ✅ ฟอร์มเลือกจำนวน --> <form method="post" class="mt-3"> <input type="hidden" name="product_id" value="<?=$prod['id']?>"> <div class="mb-3"> <label class="fw-semibold">จำนวนที่ต้องการ:</label> <?php if($prod['stock'] > 0 || $can_preorder): ?> <div class="qty-group mt-2"> <button type="button" class="qty-btn" id="minusBtn">-</button> <input type="number" id="qtyInput" name="qty" value="1" min="1" max="<?=$can_preorder ? 99 : $prod['stock']?>" class="form-control w-auto text-center"> <button type="button" class="qty-btn" id="plusBtn">+</button> </div> <?php else: ?> <p class="text-muted">ไม่สามารถเลือกจำนวนได้ (สินค้าหมด)</p> <?php endif; ?> </div> <!-- ✅ ปุ่มเพิ่มตะกร้า + กลับหน้าแรก --> <div class="d-flex flex-column flex-md-row gap-2"> <?php if($booking_status == 'off'): ?> <button class="btn btn-secondary w-100 py-2" disabled>⛔ ระบบปิดรับจอง</button> <?php elseif($prod['stock'] > 0 || $can_preorder): ?> <button type="submit" name="add_to_cart" class="btn btn-success w-100 py-2">🛒 เพิ่มไปยังตะกร้า</button> <?php else: ?> <button class="btn btn-secondary w-100 py-2" disabled>สินค้าหมด</button> <?php endif; ?> <a href="index.php" class="btn btn-outline-secondary w-100 py-2">⬅ กลับหน้าแรก</a> </div> </form> </div> </div> </div> <!-- ✅ Modal แจ้งเตือน --> <div class="modal fade" id="cartModal" tabindex="-1" aria-labelledby="cartModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content border-0 shadow-lg"> <div class="modal-header bg-success text-white"> <h5 class="modal-title" id="cartModalLabel">เพิ่มเหรียญสำเร็จ</h5> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button> </div> <div class="modal-body text-center py-4"> <h1 class="text-success mb-3">✅</h1> <p class="fs-5 fw-semibold">เพิ่มเหรียญลงตะกร้าเรียบร้อยแล้ว!</p> </div> <div class="modal-footer justify-content-center"> <a href="user/index.php" class="btn btn-primary">ดูตะกร้าสินค้า</a> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">เลือกเหรียญเพิ่ม</button> </div> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/lightbox2@2.11.4/dist/js/lightbox-plus-jquery.min.js"></script> <script> document.getElementById('minusBtn')?.addEventListener('click',()=>{ let input=document.getElementById('qtyInput'); let val=parseInt(input.value); if(val>1) input.value=val-1; }); document.getElementById('plusBtn')?.addEventListener('click',()=>{ let input=document.getElementById('qtyInput'); let val=parseInt(input.value); if(val < parseInt(input.max)) input.value=val+1; }); // ✅ แสดง Modal เมื่อเพิ่มสินค้าสำเร็จ <?php if(isset($_GET['cart_added'])): ?> document.addEventListener('DOMContentLoaded', function(){ const modal = new bootstrap.Modal(document.getElementById('cartModal')); modal.show(); }); <?php endif; ?> </script> </div> <footer> <p class="mb-0">วิทยาลัยเทคนิคเชียงใหม่ สถาบันการอาชีวศึกษาภาคเหนือ 1<br> 9 ถ.เวียงแก้ว ต.ศรีภูมิ อ.เมืองเชียงใหม่ จ.เชียงใหม่ 50200 โทรศัพท์ 053-217708-9</p> <small>© 2025 Designed and developed by <a href="https://kridsana.cmtc.ac.th" target="_blank">KruBig</a> Chiang Mai Technical College</small> </footer> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.45 |
proxy
|
phpinfo
|
Settings