<?php require_once('conn.php'); // Check login status checkLogin("信息管理"); // Initialize all variables to avoid undefined warnings $id = isset($_POST['id']) ? $_POST['id'] : ''; $product_name = isset($_POST['ProductName']) ? htmlspecialcharsFix($_POST['ProductName']) : ''; $product_img = isset($_POST['ProductImg']) ? htmlspecialcharsFix($_POST['ProductImg']) : ''; $unit = isset($_POST['unit']) ? htmlspecialcharsFix($_POST['unit']) : ''; $moq = isset($_POST['moq']) ? htmlspecialcharsFix($_POST['moq']) : ''; $category_id = isset($_POST['category_id']) ? intval($_POST['category_id']) : 0; $nosale = isset($_POST['nosale']) ? $_POST['nosale'] : array(); $note = isset($_POST['note']) ? htmlspecialcharsFix($_POST['note']) : ''; $tips = isset($_POST['tips']) ? htmlspecialcharsFix($_POST['tips']) : ''; $keys = isset($_POST['keys']) ? $_POST['keys'] : ''; $page = isset($_POST['page']) ? $_POST['page'] : 1; // Initialize specification variables $spec_name = isset($_POST['spec_name']) ? $_POST['spec_name'] : array(); $spec_value = isset($_POST['spec_value']) ? $_POST['spec_value'] : array(); $spec_price = isset($_POST['spec_price']) ? $_POST['spec_price'] : array(); $spec_moq = isset($_POST['spec_moq']) ? $_POST['spec_moq'] : array(); $spec_code = isset($_POST['spec_code']) ? $_POST['spec_code'] : array(); $spec_sort = isset($_POST['spec_sort']) ? $_POST['spec_sort'] : array(); // Redirect URL $redirect_url = "products.php?Keys=" . $keys . "&Page=" . $page; if ($category_id) { $redirect_url .= "&category_id=" . $category_id; } // Determine if this is an edit or a new record $is_edit = (!empty($id) && is_numeric($id)); // Process nosale array into comma-separated string $nosale_str = ''; if (is_array($nosale) && !empty($nosale)) { $nosale_clean = array_map('intval', $nosale); // Ensure all values are integers $nosale_str = implode(',', $nosale_clean); } // Validate form data if (empty($product_name)) { // You could add error handling here header("Location: " . $redirect_url); exit(); } // Validate specifications - at least one specification is required with all fields filled $has_valid_specs = false; if (is_array($spec_name) && !empty($spec_name)) { foreach ($spec_name as $key => $name) { if (!empty($name) && isset($spec_price[$key]) && !empty($spec_price[$key]) && isset($spec_moq[$key]) && !empty($spec_moq[$key])) { $has_valid_specs = true; break; } } } if (!$has_valid_specs) { // Redirect back with error message header("Location: " . $redirect_url . "&error=missing_specs"); exit(); } if ($is_edit) { // Update existing product $sql = "UPDATE products SET ProductName = '" . mysqli_real_escape_string($conn, $product_name) . "', ProductImg = '" . mysqli_real_escape_string($conn, $product_img) . "', Addtime = NOW(), moq = '" . mysqli_real_escape_string($conn, $moq) . "', unit = '" . mysqli_real_escape_string($conn, $unit) . "', nosale = '" . $nosale_str . "', note = '" . mysqli_real_escape_string($conn, $note) . "', tips = '" . mysqli_real_escape_string($conn, $tips) . "', category_id = " . $category_id . " WHERE id = " . (int)$id; mysqli_query($conn, $sql); // Clear existing specifications for this product mysqli_query($conn, "DELETE FROM product_specifications WHERE product_id = " . (int)$id); // Add new specifications if (is_array($spec_name) && !empty($spec_name)) { foreach ($spec_name as $key => $name) { if (!empty($name) && isset($spec_price[$key]) && !empty($spec_price[$key])) { $spec_price_value = isset($spec_price[$key]) && is_numeric($spec_price[$key]) ? (float)$spec_price[$key] : 0; $spec_moq_value = isset($spec_moq[$key]) && is_numeric($spec_moq[$key]) ? (int)$spec_moq[$key] : 1; $spec_code_value = isset($spec_code[$key]) ? mysqli_real_escape_string($conn, $spec_code[$key]) : ''; $spec_sort_value = isset($spec_sort[$key]) && is_numeric($spec_sort[$key]) ? (int)$spec_sort[$key] : 0; $spec_value_value = isset($spec_value[$key]) ? mysqli_real_escape_string($conn, $spec_value[$key]) : ''; $sql = "INSERT INTO product_specifications (product_id, spec_name, spec_value, price, min_order_quantity, spec_code, addtime, sort_order) VALUES ( " . (int)$id . ", '" . mysqli_real_escape_string($conn, $name) . "', '" . $spec_value_value . "', " . $spec_price_value . ", " . $spec_moq_value . ", '" . $spec_code_value . "', NOW(), " . $spec_sort_value . " )"; mysqli_query($conn, $sql); } } } } else { // Insert new product $sql = "INSERT INTO products (ProductName, ProductImg, Addtime, moq, unit, nosale, note, tips, category_id) VALUES ( '" . mysqli_real_escape_string($conn, $product_name) . "', '" . mysqli_real_escape_string($conn, $product_img) . "', NOW(), '" . mysqli_real_escape_string($conn, $moq) . "', '" . mysqli_real_escape_string($conn, $unit) . "', '" . $nosale_str . "', '" . mysqli_real_escape_string($conn, $note) . "', '" . mysqli_real_escape_string($conn, $tips) . "', " . $category_id . " )"; mysqli_query($conn, $sql); $id = mysqli_insert_id($conn); // Add specifications for new product if (is_array($spec_name) && !empty($spec_name)) { foreach ($spec_name as $key => $name) { if (!empty($name) && isset($spec_price[$key]) && !empty($spec_price[$key])) { $spec_price_value = isset($spec_price[$key]) && is_numeric($spec_price[$key]) ? (float)$spec_price[$key] : 0; $spec_moq_value = isset($spec_moq[$key]) && is_numeric($spec_moq[$key]) ? (int)$spec_moq[$key] : 1; $spec_code_value = isset($spec_code[$key]) ? mysqli_real_escape_string($conn, $spec_code[$key]) : ''; $spec_sort_value = isset($spec_sort[$key]) && is_numeric($spec_sort[$key]) ? (int)$spec_sort[$key] : 0; $spec_value_value = isset($spec_value[$key]) ? mysqli_real_escape_string($conn, $spec_value[$key]) : ''; $sql = "INSERT INTO product_specifications (product_id, spec_name, spec_value, price, min_order_quantity, spec_code, addtime, sort_order) VALUES ( " . (int)$id . ", '" . mysqli_real_escape_string($conn, $name) . "', '" . $spec_value_value . "', " . $spec_price_value . ", " . $spec_moq_value . ", '" . $spec_code_value . "', NOW(), " . $spec_sort_value . " )"; mysqli_query($conn, $sql); } } } } // Redirect after save mysqli_close($conn); header("Location: " . $redirect_url); exit();