Ce document présente la conception et le développement d’un site de vente en ligne pour des montres de luxe et d’autres produits. Le projet est réalisé dans le cadre de la SAÉ 3.Real.01 : Développement d’une application, dans le but de mettre en pratique les compétences de développement web dynamique, gestion de base de données et architecture logicielle.
L'application a été développée avec le framework PHP CodeIgniter et repose sur une base de données relationnelle.
-
Affichage des montres de luxe disponibles avec leur description, prix et quantité en stock.
-
Possibilité de filtrer les produits selon plusieurs critères :
Catégorie :
- Montre
- Boite
- Chiffon
- Bouton de manchette
Couleur :
- Bleu
- Vert
- Jaune
- Rouge
- Rose
- Rainbow
- Gold
- Silver
Mouvement :
- Automatique
- Quartz
Prix :
- Par ordre croissant
- Par ordre décroissant
Disponibilité en stock
- Inscription et connexion des utilisateurs.
- Chaque utilisateur dispose d’un compte personnel permettant :
- De passer des commandes.
- De consulter l’historique de ses commandes.
- Ajout de produits au panier.
- Suppression de produits du panier.
- Mise à jour des quantités.
- Empêchement d’ajout de produits qui ne sont plus en stock.
- Affichage du total du panier.
- Finalisation de la commande.
- Mise en place d’une stratégie de paiement permettant plusieurs modes de paiement (carte bancaire, PayPal).
- Gestion des erreurs de paiement.
- Confirmation de commande par e-mail.
- Lorsqu'un produit n’est plus en stock, il ne peut pas être ajouté au panier.
- Mise à jour automatique des stocks lors de la validation des commandes.
L’application suit l’architecture MVC (Modèle-Vue-Contrôleur) en utilisant le framework PHP CodeIgniter :
- Modèle : Représente la gestion des données (DAO, gestion des entités et accès à la base de données).
- Vue : Gère l’affichage des pages HTML aux utilisateurs.
- Contrôleur : Contient la logique métier et gère les interactions entre le modèle et la vue.
-
Factory (DAO Factory) :
- Permet de créer des objets DAO (Data Access Object) pour accéder aux différentes tables de la base de données.
- Cette factory permet d’isoler la logique de création des objets de la couche d’accès aux données.
-
Strategy (Paiement) :
- Implémentation de différentes stratégies de paiement (par exemple : paiement par carte bancaire, PayPal).
- Chaque stratégie implémente une interface commune et peut être choisie dynamiquement lors de la finalisation de la commande.
-
Command (Commande) :
- Ce pattern est utilisé pour encapsuler les différentes opérations liées à une commande (ajout au panier, suppression d’un article, validation de la commande).
- Chaque action est représentée par une commande concrète qui implémente une interface commune.
- Permet d’annuler ou de rejouer certaines actions, améliorant ainsi la gestion des erreurs et la flexibilité du système.
La base de données contient les tables suivantes :
- Utilisateurs : Contient les informations des utilisateurs inscrits.
- Produits : Contient les informations sur les montres et autres produits disponibles à la vente.
- Commandes : Contient les informations sur les commandes passées par les utilisateurs.
- DétailsCommande : Contient les détails de chaque commande (produits commandés, quantités, prix).
- Contraintes de clé primaire sur chaque table.
- Contraintes de clé étrangère pour assurer la cohérence entre les tables Commandes et DétailsCommande.
- Triggers : Mise à jour automatique des stocks lors de la validation d’une commande.
- Cloner le dépôt Git du projet.
- Configurer le fichier
config.php
de CodeIgniter avec les paramètres de connexion à la base de données. - Importer le fichier SQL fourni pour créer la base de données.
- Déployer le projet sur un serveur web compatible PHP.
Des jeux d’essais ont été réalisés pour vérifier :
- L’inscription et la connexion des utilisateurs.
- L’ajout et la suppression de produits au panier.
- La gestion des stocks.
- La finalisation des commandes.
- Les différentes stratégies de paiement.
- Connexion/Inscription : L’utilisateur doit s’inscrire ou se connecter pour pouvoir passer commande.
- Parcourir les produits : L’utilisateur peut filtrer les produits selon les critères présentés.
- Ajouter au panier : L’utilisateur peut ajouter des produits disponibles au panier.
- Passer commande : Une fois les produits ajoutés, l’utilisateur peut finaliser sa commande en choisissant un mode de paiement.
Ce projet a permis de mettre en pratique les compétences de développement web, de gestion de base de données et d’utilisation des design patterns. L’application répond aux besoins classiques d’un site de vente en ligne tout en respectant les contraintes de qualité et de performance.