getConnection(); $action = $_POST['action'] ?? ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { try { switch ($action) { case 'add_category': $name = $_POST['name'] ?? ''; $parent_id = $_POST['parent_id'] ?: null; $description = $_POST['description'] ?? null; $sort_order = $_POST['sort_order'] ?? 0; $is_active = isset($_POST['is_active']) ? 1 : 0; // Создаем slug из названия $slug = strtolower(preg_replace('/[^a-z0-9]+/i', '-', $name)); $stmt = $db->prepare(" INSERT INTO categories (name, slug, parent_id, description, sort_order, is_active) VALUES (?, ?, ?, ?, ?, ?) "); $stmt->execute([$name, $slug, $parent_id, $description, $sort_order, $is_active]); header('Location: catalog_admin.php?action=categories&message=Категория успешно добавлена'); exit(); case 'edit_category': $category_id = $_POST['category_id'] ?? 0; $name = $_POST['name'] ?? ''; $parent_id = $_POST['parent_id'] ?: null; $description = $_POST['description'] ?? null; $sort_order = $_POST['sort_order'] ?? 0; $is_active = isset($_POST['is_active']) ? 1 : 0; // Создаем slug из названия $slug = strtolower(preg_replace('/[^a-z0-9]+/i', '-', $name)); $stmt = $db->prepare(" UPDATE categories SET name = ?, slug = ?, parent_id = ?, description = ?, sort_order = ?, is_active = ? WHERE category_id = ? "); $stmt->execute([$name, $slug, $parent_id, $description, $sort_order, $is_active, $category_id]); header('Location: catalog_admin.php?action=categories&message=Категория успешно обновлена'); exit(); case 'delete_category': $category_id = $_POST['category_id'] ?? 0; // Проверяем, есть ли активные товары в этой категории $checkStmt = $db->prepare(" SELECT COUNT(*) FROM products WHERE category_id = ? AND is_available = TRUE "); $checkStmt->execute([$category_id]); $active_products = $checkStmt->fetchColumn(); if ($active_products > 0) { header('Location: catalog_admin.php?action=categories&error=Невозможно удалить категорию с активными товарами'); exit(); } // Проверяем дочерние категории $checkChildStmt = $db->prepare(" SELECT COUNT(*) FROM categories WHERE parent_id = ? AND is_active = TRUE "); $checkChildStmt->execute([$category_id]); $active_children = $checkChildStmt->fetchColumn(); if ($active_children > 0) { header('Location: catalog_admin.php?action=categories&error=Невозможно удалить категорию с активными дочерними категориями'); exit(); } // Удаляем категорию $stmt = $db->prepare("DELETE FROM categories WHERE category_id = ?"); $stmt->execute([$category_id]); header('Location: catalog_admin.php?action=categories&message=Категория успешно удалена'); exit(); } } catch (PDOException $e) { header('Location: catalog_admin.php?action=categories&error=' . urlencode('Ошибка базы данных: ' . $e->getMessage())); exit(); } } header('Location: catalog_admin.php'); exit(); ?>