File manager - Edit - /var/www/order.cmtc.ac.th/user/update_cart.php
Back
<?php session_start(); include('../config/db.php'); header('Content-Type: application/json'); if (!isset($_POST['id']) || !isset($_POST['qty'])) { echo json_encode(['error' => 'ข้อมูลไม่ครบถ้วน']); exit; } $pid = intval($_POST['id']); $new_qty = intval($_POST['qty']); if ($new_qty <= 0) { echo json_encode(['error' => 'จำนวนต้องมากกว่า 0']); exit; } // ดึงข้อมูลสินค้า $product = $conn->query("SELECT stock, reserved, price FROM products WHERE id=$pid")->fetch_assoc(); if (!$product) { echo json_encode(['error' => 'ไม่พบสินค้า']); exit; } $current_reserved = intval($product['reserved']); $current_stock = intval($product['stock']); $current_in_cart = isset($_SESSION['cart'][$pid]) ? intval($_SESSION['cart'][$pid]) : 0; $difference = $new_qty - $current_in_cart; // ถ้าต้องเพิ่ม reserved if ($difference > 0) { // ตรวจสอบว่ามีของเหลือไหม if (($current_stock - $current_reserved) < $difference) { echo json_encode(['error' => 'สินค้าไม่พอ']); exit; } $conn->query("UPDATE products SET reserved = reserved + $difference WHERE id = $pid"); } // ถ้าต้องลด reserved elseif ($difference < 0) { $abs = abs($difference); $conn->query("UPDATE products SET reserved = GREATEST(reserved - $abs, 0) WHERE id = $pid"); } // อัปเดตตะกร้าใน session $_SESSION['cart'][$pid] = $new_qty; // ดึงค่าหลังอัปเดต $updated = $conn->query("SELECT stock, reserved FROM products WHERE id=$pid")->fetch_assoc(); $available = max(0, $updated['stock'] - $updated['reserved']); // ส่งกลับข้อมูล echo json_encode([ 'success' => true, 'remaining' => $available, 'reserved' => $updated['reserved'] ]);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.41 |
proxy
|
phpinfo
|
Settings