File manager - Edit - /var/www/order.cmtc.ac.th/user/upload_slip.php
Back
<?php session_start(); include('../config/db.php'); $error_message = ''; $status_text = ''; if($_SERVER['REQUEST_METHOD'] == 'POST'){ // ✅ รับค่าจากฟอร์ม $fullname = mysqli_real_escape_string($conn, $_POST['fullname']); $phone = mysqli_real_escape_string($conn, $_POST['phone']); $address = mysqli_real_escape_string($conn, $_POST['address']); $zipcode = mysqli_real_escape_string($conn, $_POST['zipcode']); $receive_method = mysqli_real_escape_string($conn, $_POST['receive_method']); $total = floatval($_POST['total']); // ✅ ตรวจสอบและอัปโหลดสลิป (เฉพาะรูปภาพ) $slipFile = ""; if(isset($_FILES['slip']['name']) && $_FILES['slip']['name'] != ''){ $ext = strtolower(pathinfo($_FILES['slip']['name'], PATHINFO_EXTENSION)); $allowed = ['jpg','jpeg','png','gif','webp']; if(!in_array($ext, $allowed)){ $error_message = "❌ กรุณาเลือกเฉพาะไฟล์รูปภาพ (JPG, PNG, GIF, WEBP)"; } else { $safe_name = preg_replace("/[^a-zA-Z0-9_\-\.]/", "", $_FILES['slip']['name']); $slipFile = time() . '_' . $safe_name; $uploadPath = "../uploads/slip/" . $slipFile; if(!move_uploaded_file($_FILES['slip']['tmp_name'], $uploadPath)){ $error_message = "❌ ไม่สามารถอัปโหลดไฟล์สลิปได้ กรุณาลองใหม่อีกครั้ง"; } } } else { $error_message = "❌ กรุณาแนบไฟล์สลิปการชำระเงิน"; } // ✅ ถ้ามี error → ข้ามการทำรายการ if($error_message === '') { // ✅ ตรวจสอบสินค้า Free Order และเก็บสถานะสินค้าแต่ละรายการ $has_free = false; $product_status_list = []; if(isset($_POST['product_name'])){ for($i = 0; $i < count($_POST['product_name']); $i++){ $pname = mysqli_real_escape_string($conn, $_POST['product_name'][$i]); $check = $conn->query("SELECT id, stock FROM products WHERE name='$pname' LIMIT 1"); if($check && $check->num_rows > 0){ $pinfo = $check->fetch_assoc(); $pid = $pinfo['id']; $stock = $pinfo['stock']; if($stock <= 0){ $has_free = true; $product_status_list[$pid] = "Pre Order"; } else { $product_status_list[$pid] = "ปกติ"; } } } } // ✅ สถานะใบสั่งซื้อ if($has_free){ $status_text = 'รอการตรวจสอบ(Pre Order)'; $order_type = 'Pre Order'; } else { $status_text = 'รอการตรวจสอบ'; $order_type = 'ปกติ'; } $order_status = "รอการตรวจสอบ"; // ✅ บันทึกข้อมูลใบสั่งซื้อ $sql = "INSERT INTO orders (fullname, phone, address, zipcode, receive_method, total, status, order_status, order_type, slip, created_at) VALUES ('$fullname', '$phone', '$address', '$zipcode', '$receive_method', '$total', '$status_text', '$order_status', '$order_type', '$slipFile', NOW())"; $conn->query($sql); $oid = $conn->insert_id; // ✅ บันทึกรายการสินค้า และปรับลดสต็อก + reserved if(isset($_POST['product_name'])){ for($i = 0; $i < count($_POST['product_name']); $i++){ $pname = mysqli_real_escape_string($conn, $_POST['product_name'][$i]); $qty = intval($_POST['qty'][$i]); $price = floatval($_POST['price'][$i]); // ดึงรหัสสินค้า $pid = 0; $res = $conn->query("SELECT id, stock, reserved FROM products WHERE name='$pname' LIMIT 1"); if($res && $res->num_rows > 0){ $pinfo = $res->fetch_assoc(); $pid = $pinfo['id']; $current_stock = intval($pinfo['stock']); $current_reserved = intval($pinfo['reserved']); } // สถานะสินค้าแต่ละรายการ $item_status = isset($product_status_list[$pid]) ? $product_status_list[$pid] : "ปกติ"; // ✅ บันทึกในตาราง order_items $conn->query("INSERT INTO order_items (order_id, product_id, qty, price, receive_method, item_status, confirm_status) VALUES ($oid, $pid, $qty, $price, '$receive_method', '$item_status', 'รอการยืนยัน')"); // ✅ ถ้าไม่ใช่ Pre Order → ปรับลด stock และ reserved if($item_status != "Pre Order" && $pid > 0){ $new_stock = max(0, $current_stock - $qty); $new_reserved = max(0, $current_reserved - $qty); $conn->query("UPDATE products SET stock = $new_stock, reserved = $new_reserved WHERE id = $pid"); } // ✅ เพิ่ม Log การจอง $log_msg = "สั่งจองสินค้า: $pname จำนวน $qty เหรียญ ผ่านวิธีรับสินค้า: $receive_method"; $total_price = $price * $qty; $conn->query(" INSERT INTO booking_logs (order_id, product_id, product_name, qty, total, customer_name, phone, receive_method, log_message, created_at) VALUES ($oid, $pid, '$pname', $qty, $total_price, '$fullname', '$phone', '$receive_method', '$log_msg', NOW()) "); } } // ✅ เคลียร์ session และตะกร้า unset($_SESSION['cart'], $_SESSION['checkout'], $_SESSION['checkout_expire']); } ?> <!DOCTYPE html> <html lang="th"> <head> <meta charset="UTF-8"> <title>ส่งข้อมูลเรียบร้อย</title> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> </head> <body> <script> <?php if($error_message != ''): ?> Swal.fire({ title: 'เกิดข้อผิดพลาด!', text: '<?=$error_message?>', icon: 'error', confirmButtonText: 'ตกลง', confirmButtonColor: '#dc3545' }).then(() => { window.history.back(); }); <?php else: ?> Swal.fire({ title: '✅ ส่งข้อมูลเรียบร้อย!', text: 'สถานะใบสั่งซื้อ: <?=$status_text?>', icon: 'success', confirmButtonText: 'ตกลง', confirmButtonColor: '#28a745' }).then(() => { window.location = 'check_status.php'; }); <?php endif; ?> </script> </body> </html> <?php } ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.42 |
proxy
|
phpinfo
|
Settings