Add .gitignore and project files
This commit is contained in:
89
fix_database.php
Normal file
89
fix_database.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
// fix_database.php
|
||||
require_once 'config/database.php';
|
||||
|
||||
$db = Database::getInstance()->getConnection();
|
||||
|
||||
echo "<h2>Исправление проблем с базой данных</h2>";
|
||||
|
||||
try {
|
||||
// 1. Проверяем есть ли категории
|
||||
$stmt = $db->query("SELECT COUNT(*) FROM categories");
|
||||
$cat_count = $stmt->fetchColumn();
|
||||
|
||||
if ($cat_count == 0) {
|
||||
echo "<p>Добавляем тестовые категории...</p>";
|
||||
$db->exec("
|
||||
INSERT INTO categories (name, slug, description) VALUES
|
||||
('Диваны', 'divany', 'Мягкая мебель для гостиной'),
|
||||
('Кресла', 'kresla', 'Кресла для гостиной и офиса'),
|
||||
('Кровати', 'krovati', 'Мебель для спальни')
|
||||
");
|
||||
echo "<p style='color: green;'>✓ Категории добавлены</p>";
|
||||
}
|
||||
|
||||
// 2. Проверяем товары с некорректными category_id
|
||||
$stmt = $db->query("
|
||||
SELECT COUNT(*) as bad_count
|
||||
FROM products
|
||||
WHERE category_id IS NULL OR category_id NOT IN (SELECT category_id FROM categories)
|
||||
");
|
||||
$bad_count = $stmt->fetchColumn();
|
||||
|
||||
if ($bad_count > 0) {
|
||||
echo "<p>Исправляем товары с некорректными категориями ($bad_count шт)...</p>";
|
||||
|
||||
// Устанавливаем первую доступную категорию
|
||||
$stmt = $db->query("SELECT category_id FROM categories LIMIT 1");
|
||||
$first_cat = $stmt->fetchColumn();
|
||||
|
||||
if ($first_cat) {
|
||||
$db->exec("
|
||||
UPDATE products
|
||||
SET category_id = $first_cat
|
||||
WHERE category_id IS NULL OR category_id NOT IN (SELECT category_id FROM categories)
|
||||
");
|
||||
echo "<p style='color: green;'>✓ Товары исправлены (установлена категория ID: $first_cat)</p>";
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Показываем текущее состояние
|
||||
echo "<h3>Текущее состояние:</h3>";
|
||||
|
||||
// Категории
|
||||
$stmt = $db->query("SELECT category_id, name FROM categories ORDER BY category_id");
|
||||
echo "<p><strong>Категории:</strong></p><ul>";
|
||||
while ($row = $stmt->fetch()) {
|
||||
echo "<li>ID: {$row['category_id']} - {$row['name']}</li>";
|
||||
}
|
||||
echo "</ul>";
|
||||
|
||||
// Товары
|
||||
$stmt = $db->query("
|
||||
SELECT p.product_id, p.name, p.category_id, c.name as cat_name
|
||||
FROM products p
|
||||
LEFT JOIN categories c ON p.category_id = c.category_id
|
||||
ORDER BY p.product_id
|
||||
");
|
||||
|
||||
echo "<p><strong>Товары:</strong></p>";
|
||||
echo "<table border='1' cellpadding='5'>";
|
||||
echo "<tr><th>ID</th><th>Название</th><th>Категория ID</th><th>Категория</th></tr>";
|
||||
|
||||
while ($row = $stmt->fetch()) {
|
||||
echo "<tr>";
|
||||
echo "<td>{$row['product_id']}</td>";
|
||||
echo "<td>" . htmlspecialchars($row['name']) . "</td>";
|
||||
echo "<td>" . ($row['category_id'] ?: 'NULL') . "</td>";
|
||||
echo "<td>" . ($row['cat_name'] ?: 'Без категории') . "</td>";
|
||||
echo "</tr>";
|
||||
}
|
||||
|
||||
echo "</table>";
|
||||
|
||||
echo "<p style='color: green; margin-top: 20px;'>✓ База данных исправлена!</p>";
|
||||
|
||||
} catch (PDOException $e) {
|
||||
echo "<p style='color: red;'>Ошибка: " . $e->getMessage() . "</p>";
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user