File manager - Edit - /var/www/order.cmtc.ac.th/user/update_cart_1.php
Back
<?php session_start(); include('../config/db.php'); $id = intval($_POST['id'] ?? 0); $new_qty = intval($_POST['qty'] ?? 0); if($id <= 0 || $new_qty < 0){ echo json_encode(['error'=>'Invalid request']); exit; } if(!isset($_SESSION['cart'][$id])){ $_SESSION['cart'][$id] = 0; } $old_qty = intval($_SESSION['cart'][$id]); $p = $conn->query("SELECT stock, reserved FROM products WHERE id=$id")->fetch_assoc(); if(!$p){ echo json_encode(['error'=>'ไม่พบสินค้า']); exit; } $stock = intval($p['stock']); $reserved = intval($p['reserved']); $available = max(0, $stock - $reserved + $old_qty); if($new_qty > $available){ echo json_encode(['error'=>"สินค้าไม่พอ (เหลือ $available)"]); exit; } // ✅ ปรับ reserved ตามส่วนต่าง $diff = $new_qty - $old_qty; if($diff != 0){ if($diff > 0){ $conn->query("UPDATE products SET reserved = reserved + $diff WHERE id = $id"); } else { $diff_abs = abs($diff); $conn->query("UPDATE products SET reserved = GREATEST(reserved - $diff_abs, 0) WHERE id = $id"); } } // ✅ อัปเดต session if($new_qty > 0){ $_SESSION['cart'][$id] = $new_qty; } else { unset($_SESSION['cart'][$id]); $conn->query("UPDATE products SET reserved = GREATEST(reserved - $old_qty, 0) WHERE id = $id"); } // ✅ ดึงคงเหลือใหม่ $p_new = $conn->query("SELECT stock, reserved FROM products WHERE id=$id")->fetch_assoc(); $remaining = max(0, $p_new['stock'] - $p_new['reserved']); echo json_encode(['success'=>true, 'id'=>$id, 'qty'=>$new_qty, 'remaining'=>$remaining]);
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.44 |
proxy
|
phpinfo
|
Settings