-
gestion d'un panier
Bonjour,
Je développe depuis peu avec Symfony. Je cherche à faire un panier (e-commerce). Est-ce que quelqu'un pourrais me dire la meilleur façon de faire ?
Je pense crée un objet array panier dans la classe myUser, et à chaque ajout de produit, je rajoute l'id du produit dans l'objet panier. Qu'est que vous en penser ?
-
Vaste sujet et pas directement lié à symfony. Je ne sais pas s'il va trouver ici la matière première pour murir totalement.
Dans les généralités
Tu as 3 possibilités pour stocker un panier :
- Dans un cokie
- Dans la session
- Dans la base
Aucune n'est la meilleures, aucune n'est totalement mauvaise. La réponse se trouve généralement à la croisée des trois solutions.
Maintenant la moins mauvaise pour toi dépend d'informations que tu ne donnes pas, essentiellement : quel est la durée de pertinence des informations du panier ?
- Combien de temps un internaute doit-il accéder a ces informations ?
- Ce temps est-il le même pour un utilisateur enregistré que pour un simple visiteur ?
- Quel doit être la sécurité des informations stockées dans le panier ?
et j'en oublie certainement.
Je t'invite a affiner ton analyse et compléter ta demande:ccool:
-
Si je peux apporter une modeste contribution.
Je ne l'ai jamais fait, mais je pense que stocker les paniers dans la base peut-être une bonne idée, et te donnera des infos statistiques intéressantes: combien de panier ont été abandonnées, que comprenaient-ils, le montant moyen etc, ont-ils été créé par des guests ou des membres...
Je pense qu'un bon moyen pour toi d'avancer c'est d'étudier le schéma de bdd des boutiques gratuites, et pour cela je te conseille prestashop qui me semble être plus simple à comprendre que magento par exemple.
-
Tout d'abord merci pour vos réponses, c'est sympa :ccool:
En suite, je voudrais garder les infos du panier pour un session (que l'utilisateur soit identufié ou pas).
Lorsque l'utilisateur s'identifie, je veux garder les valeurs du panier qu'il aurais pu créer lorsqu'il n'étais pas identifié.
Les données du panier n'étant pas critique, il n'y aura pas de sécurité pour ces données.
La solution de stocker les paniers dans la base me semble intéressante, mais j'ai un question par rapport à ça :
Si on modifie le panier en cours, on doit le modifier directement dans la base, alors ça augmente le nombre de requête.
Je pense que combiner la session et la base serai la meilleurs solution, pour limiter le nombre de requête envoyer au serveur, et pour stocker le panier de façon dynamique.
-
Que ton panier soit stocké dans un cokie, dans une session ou dans la base, tu vas être bon pour interroger la base lors de l'affichage, sauf à stocker les libellés, prix et autres informations dans le panier ce qui est pour le moins peu sur, voir dangereux pour le cas des cokies. Donc le stockage dans la base ne rajoute une requête qu'en écriture, pas en lecture. Et deux possibilités, soit c'est un petit site et tu as peu de chance d'avoir une avalanche de requêtes que les serveurs actuels ne pourraient gérer, soit c'est un très gros site et tu as les moyens de mettre le serveur de base de données qui est nécessaire...
Si tu stocks en base pour des personnes non identifiées, tu aurais peut-être intérêt à utiliser cela avec un cokie pour relier le panier à une personne non connectée, sans pour autant être tributaire d'une durée de session qui peut être relativement courte par rapport au temps de réflexion d'un acheteur qui peut dépasser largement la durée d'une session. Si ton user perd son panier, tu peux être presque sur de perdre ta vente.
Si j'avais a le créer, et vu ainsi (c'est a dire sans avoir regardé le code utilisé par de gros sites de vente en libre), je partirais pour un cokie d'identification du panier et un stockage dans la base, ainsi qu'une petite procédure de nettoyage de la base des paniers...