Garage Auto Performance

Documentation Technique

Interface d'Administration des Véhicules

Explication Détaillée de l'Outil de Gestion de l'Inventaire (Back-Office)

Commencer la Revue Technique

💡 Philosophie et Style de l'Application

Cette interface a été conçue autour de deux piliers fondamentaux : l'**efficacité opérationnelle** et la **sécurité des données**.

Style et Expérience Utilisateur (UX)

  • **Style (Bootstrap)** : Utilisation du framework Bootstrap pour garantir un affichage moderne, épuré et surtout **réactif (responsive)**, optimisé pour tout type d'écran.
  • **Navigation par Onglets** : Segmentation de la saisie (Général, Technique, Prix, Média) pour éviter les formulaires décourageants et **améliorer la rapidité d'exécution** des tâches.

Sécurité et Intégrité des Données (PDO & Transactions)

  • **Sécurité (PDO)** : Toute communication avec la base de données utilise l'interface **PDO (PHP Data Objects)**. C'est la norme moderne qui assure une protection contre les **injections SQL**, la menace la plus courante.
  • **Transactions (Intégrité)** : Les opérations complexes (Ajout/Modification) sont enveloppées dans des **Transactions**. Cela signifie que si la base de données échoue à enregistrer une partie des données (ex: les équipements), **elle annule tout** pour éviter d'avoir des fiches incomplètes ("cassées").

1. Page de Création : `add_vehicle.php` (Ajouter un Véhicule)

Le rôle de cette page est de créer une fiche d'inventaire complète, du moteur aux options.

A. Rôle du code PHP (Processus d'Enregistrement)

  • **Initialisation** : Connexion à la BDD et récupération de la liste des équipements possibles.
  • **Validation** : Vérification des champs obligatoires (Marque, Modèle, Prix, Kilométrage).
  • **Upload de Fichier (Nouveau)** :
    • Interception du fichier image via `$_FILES`.
    • Création d'un **nom de fichier unique** pour éviter les conflits et les risques de sécurité.
    • Déplacement du fichier dans le dossier sécurisé du serveur (`img/vente-vehicules/`).
    • Stockage du chemin d'accès dans la colonne `image_url`.
  • **Transaction et Insertion** : L'opération est exécutée en transaction. Les données principales sont insérées, l'ID est récupéré, puis les liaisons d'équipement sont insérées.

B. Détail de la Section "Média"

ChampTypeRôle
Image Principale (Fichier)`input type="file"`Permet la sélection et l'envoi sécurisé de l'image au serveur. **Avantage :** Plus rapide et plus fiable qu'une URL.
URL Vidéo`input type="url"`Champ simple pour l'URL, car les vidéos sont généralement hébergées sur des plateformes externes (YouTube, Vimeo).

2. Page de Mise à Jour : `edit_vehicle.php` (Modifier un Véhicule)

Cette page a un rôle double : elle lit les données existantes avant de permettre leur modification.

A. Rôle du code PHP (Processus de Mise à Jour)

  • **Chargement des Données (GET)** : Le script lit l'ID du véhicule dans l'URL. Il exécute ensuite **trois requêtes de lecture** pour pré-remplir le formulaire avec toutes les données existantes.
  • **Gestion de l'Image** :
    • **Si un nouveau fichier est uploadé** : Il suit la procédure sécurisée et la nouvelle URL est enregistrée.
    • **Si aucun nouveau fichier n'est détecté** : L'ancienne `image_url` est simplement conservée. **L'image n'est jamais perdue** si vous modifiez un autre champ.
  • **Mise à Jour des Équipements (Propre et Sécurisé)** : L'ancien équipement est entièrement effacé (`DELETE`) de la table de jointure, puis les nouvelles sélections sont insérées (`INSERT`). C'est la méthode la plus fiable pour gérer les listes de cases à cocher.

B. Détail de la Section "Équipements"

La page utilise un simple test `in_array()` pour déterminer si la case doit être cochée (`checked`). **Avantage Client :** Le client a une vision immédiate de l'état actuel et n'a qu'à cocher/décocher les changements.

3. Page de Suppression : `delete_vehicle.php` (Supprimer un Véhicule)

Ce script est un processus en coulisse conçu pour être rapide et garantir la propreté de la base de données (intégrité).

Opération de Nettoyage et Sécurité

RôleDescription
**Sécurité d'Accès**Le script s'assure d'abord qu'un ID valide est présent. Il est conçu pour être appelé uniquement via un lien de suppression depuis la page d'inventaire.
**Confirmation Humaine**Avant d'arriver au script PHP, une boîte d'alerte (`onclick="return confirm(...)"`) est exigée, demandant une confirmation humaine pour éviter les suppressions accidentelles.
**Intégrité de la BDD (Le point fort)**La suppression dans la table principale (`vehicles`) déclenche automatiquement une **cascade** : la configuration de la base de données (`ON DELETE CASCADE`) efface instantanément **toutes les options liées** dans la table `vehicle_has_equipment`.

Bénéfice Client :

Le client n'a pas à se soucier des options résiduelles. Une seule action supprime tout, garantissant que la base de données reste **légère et performante**.