Add .gitignore and project files
This commit is contained in:
122
init_db.php
Normal file
122
init_db.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
require_once 'config/database.php';
|
||||
|
||||
$db = Database::getInstance()->getConnection();
|
||||
|
||||
// Создаем таблицы, если они не существуют
|
||||
$tables = [
|
||||
'users' => "
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
user_id SERIAL PRIMARY KEY,
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
full_name VARCHAR(100) NOT NULL,
|
||||
phone VARCHAR(20),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
is_admin BOOLEAN DEFAULT FALSE
|
||||
)
|
||||
",
|
||||
|
||||
'categories' => "
|
||||
CREATE TABLE IF NOT EXISTS categories (
|
||||
category_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
slug VARCHAR(100) UNIQUE NOT NULL,
|
||||
parent_id INTEGER REFERENCES categories(category_id),
|
||||
description TEXT,
|
||||
sort_order INTEGER DEFAULT 0,
|
||||
is_active BOOLEAN DEFAULT TRUE
|
||||
)
|
||||
",
|
||||
|
||||
'products' => "
|
||||
CREATE TABLE IF NOT EXISTS products (
|
||||
product_id SERIAL PRIMARY KEY,
|
||||
category_id INTEGER REFERENCES categories(category_id),
|
||||
name VARCHAR(200) NOT NULL,
|
||||
slug VARCHAR(200) UNIQUE NOT NULL,
|
||||
description TEXT,
|
||||
price DECIMAL(10, 2) NOT NULL,
|
||||
old_price DECIMAL(10, 2),
|
||||
sku VARCHAR(50) UNIQUE,
|
||||
stock_quantity INTEGER DEFAULT 0,
|
||||
is_available BOOLEAN DEFAULT TRUE,
|
||||
is_featured BOOLEAN DEFAULT FALSE,
|
||||
rating DECIMAL(3, 2) DEFAULT 0,
|
||||
review_count INTEGER DEFAULT 0,
|
||||
image_url VARCHAR(500),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
"
|
||||
];
|
||||
|
||||
foreach ($tables_to_create as $table_name => $sql) {
|
||||
try {
|
||||
$db->exec($sql);
|
||||
echo "Таблица '$table_name' создана/проверена<br>";
|
||||
} catch (PDOException $e) {
|
||||
echo "Ошибка создания таблицы '$table_name': " . $e->getMessage() . "<br>";
|
||||
}
|
||||
}
|
||||
|
||||
// Добавляем тестовые данные
|
||||
// Проверяем, есть ли уже категории
|
||||
$check_categories = $db->query("SELECT COUNT(*) FROM categories")->fetchColumn();
|
||||
|
||||
if ($check_categories == 0) {
|
||||
// Добавляем категории
|
||||
$categories = [
|
||||
['Мягкая мебель', 'myagkaya-mebel', NULL, 'Диваны, кресла, пуфы'],
|
||||
['Диваны', 'divany', 1, 'Прямые и угловые диваны'],
|
||||
['Кресла', 'kresla', 1, 'Кресла для гостиной и офиса'],
|
||||
['Спальня', 'spalnya', NULL, 'Кровати, тумбы, комоды'],
|
||||
['Кровати', 'krovati', 4, 'Односпальные и двуспальные кровати']
|
||||
];
|
||||
|
||||
foreach ($categories as $category) {
|
||||
$stmt = $db->prepare("INSERT INTO categories (name, slug, parent_id, description) VALUES (?, ?, ?, ?)");
|
||||
$stmt->execute($category);
|
||||
}
|
||||
echo "Добавлены категории<br>";
|
||||
}
|
||||
|
||||
// Проверяем, есть ли уже товары
|
||||
$check_products = $db->query("SELECT COUNT(*) FROM products")->fetchColumn();
|
||||
|
||||
if ($check_products == 0) {
|
||||
// Добавляем товары
|
||||
$products = [
|
||||
[2, 'Диван VELVET', 'divan-velvet', 'Прямой диван с тканевой обивкой', 45999, 54999, 'DIV-VEL-001', 10],
|
||||
[2, 'Диван MODERN', 'divan-modern', 'Угловой диван с кожаной обивкой', 78999, 89999, 'DIV-MOD-002', 5],
|
||||
[3, 'Кресло OPPORTUNITY', 'kreslo-opportunity', 'Кресло с деревянными ножками', 16999, 19999, 'KRES-OPP-001', 15],
|
||||
[3, 'Кресло GOLDEN', 'kreslo-golden', 'Золотистое кресло для гостиной', 19999, 23999, 'KRES-GOL-002', 8],
|
||||
[5, 'Кровать CLASSIC', 'krovat-classic', 'Двуспальная кровать из массива дуба', 64999, 74999, 'KROV-CLA-001', 3]
|
||||
];
|
||||
|
||||
foreach ($products as $product) {
|
||||
$stmt = $db->prepare("INSERT INTO products (category_id, name, slug, description, price, old_price, sku, stock_quantity)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
$stmt->execute($product);
|
||||
}
|
||||
echo "Добавлены товары<br>";
|
||||
}
|
||||
|
||||
// Проверяем, есть ли администратор
|
||||
$check_admin = $db->prepare("SELECT COUNT(*) FROM users WHERE email = ?");
|
||||
$check_admin->execute(['admin@aeterna.ru']);
|
||||
|
||||
if ($check_admin->fetchColumn() == 0) {
|
||||
// Добавляем администратора (пароль: admin123)
|
||||
$admin_password = password_hash('admin123', PASSWORD_DEFAULT);
|
||||
$stmt = $db->prepare("INSERT INTO users (email, password_hash, full_name, phone, is_admin)
|
||||
VALUES (?, ?, ?, ?, ?)");
|
||||
$stmt->execute(['admin@aeterna.ru', $admin_password, 'Администратор AETERNA', '+79129991223', true]);
|
||||
echo "Добавлен администратор (email: admin@aeterna.ru, пароль: admin123)<br>";
|
||||
}
|
||||
|
||||
echo "<h3>База данных успешно инициализирована!</h3>";
|
||||
echo "<a href='catalog.php'>Перейти в каталог</a>";
|
||||
?>
|
||||
Reference in New Issue
Block a user