File manager - Edit - /home/webapp69.cm.in.th/u69319090030/030 shop/product.php
Back
<?php require_once __DIR__ . '/config/db.php'; require_once __DIR__ . '/helpers/jwt_helper.php'; require_once __DIR__ . '/helpers/auth.php'; if (session_status() === PHP_SESSION_NONE) { session_start(); } $currentUser = get_current_user_data(); $id = isset($_GET['id']) ? (int)$_GET['id'] : 0; if ($id <= 0) { header("Location: index.php"); exit(); } // ดึงข้อมูลสินค้า try { $stmt = $pdo->prepare("SELECT * FROM products WHERE id = ?"); $stmt->execute([$id]); $prod = $stmt->fetch(); if (!$prod) { header("Location: index.php"); exit(); } } catch (PDOException $e) { die("Database error: " . $e->getMessage()); } $cart_success = ''; $cart_error = ''; // จัดการการหยิบลงตะกร้าสินค้าพร้อมไซส์และสี if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_to_cart'])) { $quantity = (int)($_POST['quantity'] ?? 1); $size = trim($_POST['size'] ?? 'N/A'); $color = trim($_POST['color'] ?? 'N/A'); if ($quantity > 0) { if (($prod['category'] ?? 'general') !== 'clothing') { $size = 'N/A'; $color = 'N/A'; } $cart_key = $prod['id'] . '_' . $size . '_' . $color; $current_in_cart = $_SESSION['cart'][$cart_key] ?? 0; if ($current_in_cart + $quantity <= $prod['stock']) { $_SESSION['cart'][$cart_key] = $current_in_cart + $quantity; $msg = "เพิ่มสินค้าจำนวน {$quantity} ชิ้น"; if ($size !== 'N/A') { $msg .= " (ไซส์ {$size}, สี{$color})"; } $cart_success = $msg . " ลงตะกร้าเรียบร้อยแล้ว!"; } else { $cart_error = "ขออภัย จำนวนสินค้าในคลังไม่เพียงพอ (คุณสั่งซื้อแล้ว {$current_in_cart} ชิ้น, คลังเหลือ {$prod['stock']} ชิ้น)"; } } } $cart_count = isset($_SESSION['cart']) ? array_sum($_SESSION['cart']) : 0; ?> <!DOCTYPE html> <html lang="th"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CyberShop // <?php echo htmlspecialchars($prod['name']); ?></title> <link rel="stylesheet" href="assets/css/style.css"> <style> .detail-container { display: grid; grid-template-columns: 1.2fr 1fr; gap: 3rem; margin-top: 2rem; } .detail-image { width: 100%; max-height: 500px; object-fit: cover; border-radius: 12px; border: 1px solid var(--border-color); box-shadow: 0 0 20px rgba(0, 0, 0, 0.6); } .qty-control { display: flex; align-items: center; gap: 0.5rem; } .qty-btn { background: var(--bg-input); border: 1px solid var(--border-color); color: var(--text-white); width: 35px; height: 35px; display: flex; align-items: center; justify-content: center; border-radius: 6px; cursor: pointer; font-size: 1.2rem; transition: all 0.3s ease; } .qty-btn:hover { border-color: var(--neon-red); color: var(--neon-red); } </style> </head> <body> <nav class="navbar"> <a href="index.php" class="navbar-brand"> CYBER<span class="brand-red">SHOP</span> </a> <div class="navbar-menu"> <a href="index.php" class="nav-link">หน้าร้านค้า</a> <a href="cart.php" class="nav-link" style="color: var(--text-white); position: relative;"> ตะกร้าสินค้า <span style="background: var(--neon-red); color: #fff; padding: 2px 7px; border-radius: 50%; font-size: 0.75rem; font-family: 'Orbitron', sans-serif; margin-left: 4px; box-shadow: 0 0 8px var(--neon-red);"> <?php echo $cart_count; ?> </span> </a> <!-- ช่องใส่โค้ดส่วนลดใน Navbar --> <div style="margin-left: 0.5rem; display: flex; align-items: center;"> <?php if (!empty($_SESSION['coupon']['code'])): ?> <div style="background: rgba(0, 240, 255, 0.1); border: 1px solid var(--neon-cyan); padding: 0.3rem 0.6rem; border-radius: 6px; display: flex; align-items: center; gap: 6px; font-size: 0.8rem; box-shadow: 0 0 10px rgba(0, 240, 255, 0.2);"> <span style="color: var(--neon-cyan); font-family: 'Orbitron', sans-serif; font-weight: bold;">🏷️ <?php echo htmlspecialchars($_SESSION['coupon']['code']); ?> (-10%)</span> <a href="?action=remove_nav_coupon" style="color: var(--neon-red); text-decoration: none; font-weight: bold; margin-left: 2px;" title="ยกเลิกโค้ด">✕</a> </div> <?php else: ?> <form action="" method="POST" style="display: flex; gap: 0.3rem; align-items: center;"> <input class="cyber-input" type="text" name="coupon_code" placeholder="🎟️ โค้ดลด 10%" style="padding: 0.35rem 0.6rem; font-size: 0.8rem; width: 120px; text-transform: uppercase; font-family: 'Orbitron', sans-serif; border-color: rgba(0, 240, 255, 0.5); color: var(--neon-cyan);"> <button type="submit" name="apply_nav_coupon" class="btn-cyber" style="padding: 0.35rem 0.65rem; font-size: 0.75rem; border-color: var(--neon-cyan); color: var(--neon-cyan); background: rgba(0, 240, 255, 0.1); white-space: nowrap;">ใช้โค้ด</button> </form> <?php endif; ?> </div> <?php if ($currentUser): ?> <span style="font-size: 0.95rem; margin-left: 1rem; padding-left: 1rem; border-left: 1px solid var(--border-color);"> สวัสดี, <span class="brand-red" style="font-weight: bold;"><?php echo htmlspecialchars($currentUser['username']); ?></span> </span> <a href="logout.php" class="btn-cyber" style="padding: 0.4rem 0.8rem; font-size: 0.75rem; border-color: var(--text-gray); margin-left: 1rem;">ออกระบบ</a> <?php else: ?> <a href="login.php" class="btn-cyber" style="padding: 0.4rem 1rem; font-size: 0.8rem; margin-left: 1rem;">เข้าสู่ระบบ</a> <?php endif; ?> </div> </nav> <div class="container" style="margin-top: 3rem;"> <a href="index.php" class="btn-cyber btn-gray" style="margin-bottom: 2rem;">« กลับไปเลือกซื้อสินค้า</a> <?php if ($cart_success): ?> <div class="cyber-alert cyber-alert-success"> <strong>[สำเร็จ]</strong> <?php echo $cart_success; ?> <a href="cart.php" style="color:#55ff99; font-weight: bold; text-decoration: underline;">เปิดตะกร้าสินค้า »</a> </div> <?php endif; ?> <?php if ($cart_error): ?> <div class="cyber-alert cyber-alert-error"> <strong>[ไม่สำเร็จ]</strong> <?php echo $cart_error; ?> </div> <?php endif; ?> <div class="detail-container"> <!-- ภาพสินค้า --> <div> <?php if ($prod['image_url']): ?> <img class="detail-image" src="<?php echo htmlspecialchars($prod['image_url']); ?>" alt="<?php echo htmlspecialchars($prod['name']); ?>"> <?php else: ?> <div style="width: 100%; height: 400px; background: #161616; display: flex; align-items: center; justify-content: center; color: #444; border-radius: 12px; border: 1px solid var(--border-color);">ไม่มีรูปภาพสินค้า</div> <?php endif; ?> <?php // แสดงวิดีโอตัวอย่างถ้ามี $vid = $prod['video_url'] ?? ''; if (!empty($vid)): // ตรวจ YouTube $ytEmbed = null; if (preg_match('/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([a-zA-Z0-9_-]{11})/', $vid, $ytMatch)) { $ytEmbed = 'https://www.youtube.com/embed/' . $ytMatch[1]; } ?> <div style="margin-top: 1.5rem;"> <div style="font-size: 0.85rem; letter-spacing: 2px; text-transform: uppercase; color: #ffc400; margin-bottom: 0.75rem; font-family: 'Orbitron', sans-serif;"> 🎬 วิดีโอตัวอย่าง </div> <div style="position: relative; width: 100%; padding-bottom: 56.25%; border-radius: 10px; overflow: hidden; border: 1px solid rgba(255,200,0,0.35); background: #000; box-shadow: 0 0 20px rgba(255,200,0,0.1);"> <?php if ($ytEmbed): ?> <iframe src="<?php echo htmlspecialchars($ytEmbed); ?>" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allowfullscreen allow="autoplay; encrypted-media"></iframe> <?php else: ?> <video src="<?php echo htmlspecialchars($vid); ?>" style="position:absolute;top:0;left:0;width:100%;height:100%;" controls></video> <?php endif; ?> </div> </div> <?php endif; ?> </div> <!-- ข้อมูลสินค้าและการซื้อ --> <div class="cyber-card"> <div style="margin-bottom: 1rem;"> <span class="badge" style="background: rgba(255, 0, 85, 0.05); color: var(--neon-red); border: 1px solid rgba(255, 0, 85, 0.2);"> <?php $prod_cat = $prod['category'] ?? 'general'; if ($prod_cat === 'clothing') echo "เสื้อผ้า"; elseif ($prod_cat === 'bags') echo "กระเป๋า"; else echo "ของใช้ไอที"; ?> </span> </div> <h1 style="font-size: 2.2rem; margin-bottom: 1rem; color: var(--text-white);"><?php echo htmlspecialchars($prod['name']); ?></h1> <div class="product-price" style="font-size: 2.2rem; margin-bottom: 1.5rem;"> <?php $member_disc = get_member_discount_percent(); $coupon_disc = !empty($_SESSION['coupon']['discount_percent']) ? $_SESSION['coupon']['discount_percent'] : 0; $effective_disc = max($member_disc, $coupon_disc); $disc_label = ($member_disc >= $coupon_disc && $member_disc > 0) ? '🛡️ ราคาสมาชิกพิเศษ (-' . $member_disc . '%)' : ('โค้ดส่วนลด (-' . $coupon_disc . '%)'); if ($effective_disc > 0): $disc_price = $prod['price'] * (1 - $effective_disc / 100); ?> <div style="display: flex; align-items: center; gap: 10px; flex-wrap: wrap;"> <span style="color: var(--neon-green); text-shadow: 0 0 12px var(--glow-green);">฿<?php echo number_format($disc_price, 2); ?></span> <span style="font-size: 0.95rem; background: var(--neon-green); color: #000; padding: 2px 12px; border-radius: 6px; font-weight: bold; font-family: 'Orbitron', sans-serif;"><?php echo $disc_label; ?></span> </div> <div style="font-size: 1.1rem; color: var(--text-gray); text-decoration: line-through; margin-top: 4px;">ราคาปกติ: ฿<?php echo number_format($prod['price'], 2); ?></div> <?php else: ?> ฿<?php echo number_format($prod['price'], 2); ?> <div style="font-size: 0.85rem; margin-top: 4px;"> <a href="register.php" style="color: var(--neon-cyan); text-decoration: none; font-weight: bold;">✨ สมัครสมาชิกรับส่วนลด 10% ทันทีที่นี่ »</a> </div> <?php endif; ?> </div> <div style="margin-bottom: 2rem; border-bottom: 1px solid var(--border-color); padding-bottom: 1.5rem; line-height: 1.6; color: var(--text-gray);"> <h4 style="margin-bottom: 0.5rem; color: var(--text-white);">รายละเอียดสินค้า:</h4> <p style="white-space: pre-wrap;"><?php echo htmlspecialchars($prod['description']); ?></p> </div> <form action="" method="POST"> <!-- การเลือกไซส์และสีเสื้อผ้า --> <?php if (($prod['category'] ?? 'general') === 'clothing'): ?> <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem;"> <div class="cyber-input-group"> <label class="cyber-label">เลือกไซส์ (SIZE)</label> <select class="cyber-input" name="size" style="background: var(--bg-input);"> <option value="S">S (รอบอก 36")</option> <option value="M" selected>M (รอบอก 38")</option> <option value="L">L (รอบอก 40")</option> <option value="XL">XL (รอบอก 42")</option> <option value="XXL">XXL (รอบอก 44")</option> </select> </div> <div class="cyber-input-group"> <label class="cyber-label">เลือกสี (COLOR)</label> <select class="cyber-input" name="color" style="background: var(--bg-input);"> <option value="ดำ" selected>ดำ (Black)</option> <option value="แดง">แดง (Red)</option> <option value="เทา">เทา (Grey)</option> </select> </div> </div> <?php endif; ?> <!-- ตัวเลือกการป้อนจำนวนชิ้นสินค้า --> <div class="cyber-input-group" style="margin-top: 1.5rem;"> <label class="cyber-label">ระบุจำนวนที่ต้องการสั่งซื้อ</label> <div class="qty-control"> <button type="button" class="qty-btn" onclick="adjustQty(-1)">-</button> <input class="cyber-input" type="number" id="quantity_input" name="quantity" value="1" min="1" max="<?php echo $prod['stock']; ?>" style="width: 70px; text-align: center; font-size: 1.1rem; font-family: 'Orbitron', sans-serif;"> <button type="button" class="qty-btn" onclick="adjustQty(1)">+</button> <span style="font-size: 0.9rem; color: var(--text-muted); margin-left: 0.5rem;"> (ในคลังคงเหลือ: <?php echo $prod['stock']; ?> ชิ้น) </span> </div> </div> <div style="margin-top: 2.5rem;"> <?php if ($prod['stock'] > 0): ?> <button type="submit" name="add_to_cart" class="btn-cyber btn-green" style="width: 100%; font-size: 1.1rem; padding: 1rem;"> หยิบสินค้าลงตะกร้า </button> <?php else: ?> <button type="button" class="btn-cyber btn-gray" style="width: 100%; cursor: not-allowed;" disabled> สินค้าหมดชั่วคราว </button> <?php endif; ?> </div> </form> </div> </div> </div> <script> function adjustQty(amount) { const input = document.getElementById('quantity_input'); let current = parseInt(input.value) || 1; const max = parseInt(input.max) || 999; current += amount; if (current < 1) current = 1; if (current > max) current = max; input.value = current; } </script> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings