// Перевірка унікальності артикула, якщо він вказаний if (!empty($vendor_code)) { $sku_check = $db->prepare("SELECT id FROM products WHERE vendor_code = ? AND id != ?"); $sku_check->execute([$vendor_code, $edit_id]); if ($sku_check->fetch()) { $errors[] = "Артикул '{$vendor_code}' вже використовується. Будь ласка, виберіть інший."; } } // Якщо немає помилок, оновлюємо товар if (empty($errors)) { try { // Перевіряємо, чи потрібно оновити external_id $getExternalID = $db->prepare("SELECT external_id FROM products WHERE id = ?"); $getExternalID->execute([$edit_id]); $currentExternalID = $getExternalID->fetchColumn(); // Якщо external_id відсутній або порожній, генеруємо новий if (empty($currentExternalID)) { // Генеруємо external_id у форматі 7xxxxxx (7 + 6 цифр) $random_part = str_pad(rand(0, 999999), 6, '0', STR_PAD_LEFT); $external_id = "7" . $random_part; } else { $external_id = $currentExternalID; } $stmt = $db->prepare(" UPDATE products SET name = ?, vendor_code = ?, description = ?, price = ?, vendor_price = ?, product_type = ?, status = ?, quantity = ?, external_id = ? WHERE id = ? "); $result = $stmt->execute([ $name, $vendor_code, $description, $price, $vendor_price, $product_type, $status, $quantity, $external_id, $edit_id ]); if ($result) { $success = "Товар успішно оновлено!"; // Оновлюємо зв'язок товару з категорією if (!empty($category_id)) { try { // Перевіряємо, чи існує таблиця product_categories $db->exec(" CREATE TABLE IF NOT EXISTS product_categories ( product_id INT NOT NULL, category_id INT NOT NULL, PRIMARY KEY (product_id, category_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; "); // Виведемо відлагоджувальну інформацію if (isset($_GET['debug_categories'])) { echo "
"; echo "

Оновлення категорії товару:

"; echo "

product_id: $edit_id, category_id: $category_id

"; // Перевіряємо поточний зв'язок $check_stmt = $db->prepare("SELECT * FROM product_categories WHERE product_id = ?"); $check_stmt->execute([$edit_id]); $current_links = $check_stmt->fetchAll(); echo "

Поточні зв'язки:

"; echo "
";
                            print_r($current_links);
                            echo "
"; } // Видаляємо існуючі зв'язки $delete_links = $db->prepare("DELETE FROM product_categories WHERE product_id = ?"); $delete_result = $delete_links->execute([$edit_id]); if (isset($_GET['debug_categories'])) { echo "

Результат видалення: " . ($delete_result ? "Успішно" : "Помилка") . "

"; } // Додаємо новий зв'язок $link_stmt = $db->prepare("INSERT INTO product_categories (product_id, category_id) VALUES (?, ?)"); $link_result = $link_stmt->execute([$edit_id, $category_id]); if (isset($_GET['debug_categories'])) { echo "

Результат додавання: " . ($link_result ? "Успішно" : "Помилка") . "

"; // Перевіряємо новий зв'язок $check_stmt = $db->prepare("SELECT * FROM product_categories WHERE product_id = ?"); $check_stmt->execute([$edit_id]); $new_links = $check_stmt->fetchAll(); echo "

Нові зв'язки:

"; echo "
";
                            print_r($new_links);
                            echo "
"; echo "
"; } } catch (Exception $e) { // Виводимо помилку для відлагодження if (isset($_GET['debug_categories'])) { echo "
"; echo "

Помилка при оновленні категорії:

"; echo "

" . $e->getMessage() . "

"; echo "
"; } } } // Виводимо дуже детальну діагностику при оновленні товару if (isset($_GET['debug_categories'])) { echo "
"; echo "

УСПІШНЕ ОНОВЛЕННЯ ТОВАРУ!

"; echo "

ID товару: " . $edit_id . "

"; echo "

Категорія: " . ($category_id ? $category_id : "не вибрана") . "

"; if (!empty($category_id)) { echo "

Спроба оновити зв'язок товар-категорія:

"; try { // Перевіряємо, чи вдалося створити таблицю $check_table = $db->query("SHOW TABLES LIKE 'product_categories'"); echo "

Таблиця product_categories існує: " . ($check_table->rowCount() > 0 ? 'Так' : 'Ні') . "

"; if ($check_table->rowCount() > 0) { // Видаляємо існуючі зв'язки $delete_links = $db->prepare("DELETE FROM product_categories WHERE product_id = ?"); $delete_result = $delete_links->execute([$edit_id]); echo "

Результат видалення старих зв'язків: " . ($delete_result ? "Успішно" : "Помилка") . "

"; // Додаємо новий зв'язок $direct_insert = $db->prepare("INSERT INTO product_categories (product_id, category_id) VALUES (?, ?)"); $insert_result = $direct_insert->execute([$edit_id, $category_id]); echo "

Результат вставки нового зв'язку: " . ($insert_result ? "Успішно" : "Помилка") . "

"; // Перевіряємо, чи додався зв'язок $check_link = $db->prepare("SELECT * FROM product_categories WHERE product_id = ? AND category_id = ?"); $check_link->execute([$edit_id, $category_id]); $link_exists = $check_link->fetch(); echo "

Зв'язок існує після вставки: " . ($link_exists ? "Так" : "Ні") . "

"; if ($link_exists) { echo "
";
                                    print_r($link_exists);
                                    echo "
"; } } else { // Спробуємо створити таблицю $db->exec(" CREATE TABLE IF NOT EXISTS product_categories ( product_id INT NOT NULL, category_id INT NOT NULL, PRIMARY KEY (product_id, category_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; "); echo "

Спроба створити таблицю product_categories: Успішно

"; // Спробуємо додати зв'язок $retry_insert = $db->prepare("INSERT INTO product_categories (product_id, category_id) VALUES (?, ?)"); $retry_result = $retry_insert->execute([$edit_id, $category_id]); echo "

Результат вставки зв'язку після створення таблиці: " . ($retry_result ? "Успішно" : "Помилка") . "

"; } } catch (Exception $e) { echo "

Помилка при оновленні зв'язку: " . $e->getMessage() . "

"; echo "

Код помилки: " . $e->getCode() . "

"; } } echo "
"; } // Перенаправлення на сторінку з продуктами header("Location: ?page=products"); exit; } else { $errors[] = "Помилка при оновленні товару"; } } catch (Exception $e) { $errors[] = "Помилка бази даних: " . $e->getMessage(); } } } // Обробка запиту на видалення товару if (isset($_GET['delete_id']) && (int)$_GET['delete_id'] > 0) { $delete_id = (int)$_GET['delete_id']; // Підтвердження видалення $confirm_delete = isset($_GET['confirm']) && $_GET['confirm'] === 'yes'; if (!$confirm_delete) { $delete_warning = "Ви впевнені, що хочете видалити цей товар? Так, видалити"; } else { try { // Видаляємо товар $delete_stmt = $db->prepare("DELETE FROM products WHERE id = ?"); $delete_result = $delete_stmt->execute([$delete_id]); if ($delete_result) { // Видаляємо також зв'язки з категоріями try { $delete_links = $db->prepare("DELETE FROM product_categories WHERE product_id = ?"); $delete_links->execute([$delete_id]); } catch (Exception $e) { // Ігноруємо помилки, оскільки таблиця може не існувати } $success = "Товар успішно видалено!"; // Перенаправлення на сторінку з продуктами header("Location: ?page=products"); exit; } else { $error = "Помилка при видаленні товару"; } } catch (Exception $e) { $error = "Помилка бази даних: " . $e->getMessage(); } } } // Параметр для повернення на сторінку з продуктами $returnUrl = '?page=products'; // Завжди використовуємо фіксований URL ?> Додати товар/послугу

Додати товар/послугу

Форма додавання нового товару/послуги
Основна інформація
Ціноутворення
Додаткові налаштування
Унікальний код товару (необов'язково)