Files
garagemanager/db.php
T
Luca ec81babb8f feat: GarageManager v1.0 - Gestion entretiens vehicules
- CRUD vehicules (nom, marque, modele, annee, immat, VIN, carburant, couleur, km, photo)
- CRUD entretiens (type, date, km, cout, mecanicien, garage, rappels km/date)
- CRUD pieces (marque, reference, prix, quantite, photo, fournisseur, categorie)
- Dashboard avec stats globales et rappels entretiens
- Vue detail par vehicule (tabs Entretiens/Pieces)
- Vue globale toutes pieces
- Upload photos vehicules et pieces
- Dark theme Tailwind-inspired
- SQLite via Docker PHP 8.3 Apache
- Traefik : garage.nas.percolouco.com
2026-03-14 23:40:35 +01:00

77 lines
2.4 KiB
PHP

<?php
define('DB_PATH', __DIR__ . '/data/garage.db');
define('UPLOADS_DIR', __DIR__ . '/uploads/');
function getDB(): PDO {
$db = new PDO('sqlite:' . DB_PATH);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$db->exec('PRAGMA foreign_keys = ON');
$db->exec('PRAGMA journal_mode = WAL');
return $db;
}
function initDB(): void {
$db = getDB();
$db->exec("
CREATE TABLE IF NOT EXISTS vehicles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
brand TEXT NOT NULL,
model TEXT NOT NULL,
year INTEGER,
license_plate TEXT,
vin TEXT,
fuel_type TEXT DEFAULT 'Essence',
color TEXT,
purchase_date TEXT,
purchase_price REAL,
current_km INTEGER DEFAULT 0,
photo TEXT,
notes TEXT,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS maintenances (
id INTEGER PRIMARY KEY AUTOINCREMENT,
vehicle_id INTEGER NOT NULL,
type TEXT NOT NULL,
description TEXT,
date TEXT NOT NULL,
km INTEGER,
cost REAL DEFAULT 0,
mechanic TEXT,
garage TEXT,
next_km INTEGER,
next_date TEXT,
invoice_photo TEXT,
notes TEXT,
created_at TEXT DEFAULT (datetime('now')),
FOREIGN KEY (vehicle_id) REFERENCES vehicles(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS parts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
vehicle_id INTEGER,
maintenance_id INTEGER,
brand TEXT,
reference TEXT,
name TEXT NOT NULL,
category TEXT DEFAULT 'Autre',
price REAL DEFAULT 0,
quantity INTEGER DEFAULT 1,
unit TEXT DEFAULT 'pièce',
supplier TEXT,
purchase_date TEXT,
photo TEXT,
notes TEXT,
created_at TEXT DEFAULT (datetime('now')),
FOREIGN KEY (vehicle_id) REFERENCES vehicles(id) ON DELETE SET NULL,
FOREIGN KEY (maintenance_id) REFERENCES maintenances(id) ON DELETE SET NULL
);
");
}
initDB();