Het bouwen van een winkel wagen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jorn Reed

Jorn Reed

12/01/2023 11:51:37
Quote Anchor link
Hoi, ik ben momenteel bezig met het bouwen van een winkel wagen class. Dit lukt prima, met functies zoals addProduct, getTotalPrice, removeProduct etc. Nu is het vrij simpel om alle producten in de cart te laden en te printen in bijvoorbeeld een winkel wagen div.

Maar nu loop ik tegen het volgende aan. Ik bouw nu een winkel wagen class voor een sportschool. Het is geen web winkel waar je even alle producten onder elkaar print. Maar de opbouw moet zo zijn:

-Winkelwagen-
Abonnement:
- flex 19,95
Addons:
- sportwater 5,00
- online app 0,00

Zoals je ziet ziet het er niet ingewikkeld uit. Maar hoe categoreer ik het zodanig dat het juiste soort product onder het juiste kopje komt?

Ga er maar even vanuit dat een product een new Product() object is.
 
PHP hulp

PHP hulp

30/01/2023 02:11:09
 
Ozzie PHP

Ozzie PHP

12/01/2023 12:17:10
Quote Anchor link
>> Maar hoe categoreer categoriseer ik het zodanig dat het juiste soort product onder het juiste kopje komt?

Product flex 19,95 = categorie Abonnement

Product sportwater 5,00 = categorie Addons

Product online app 0,00 = categorie Addons

Het staat eigenlijk gewoon al in je vraag hè ;-)
 
Jorn Reed

Jorn Reed

12/01/2023 12:23:03
Quote Anchor link
Dus eigenlijk gewoon een extra property aan Product class toevoegen, waarin ik een categorie meegeef. En in JS waarmee ik de data ophaal, gewoon filteren en loopen aan de hand van de categorie?
 
Ozzie PHP

Ozzie PHP

12/01/2023 12:36:06
Quote Anchor link
Je vraagt hier naar een "best practice". Iets wat ik zelf ook wel eens doe. Je bent echter zelf een systeem aan het bouwen, dus 'hoe' je het invult is jouw keuze.

>> Dus eigenlijk gewoon een extra property aan Product class toevoegen, waarin ik een categorie meegeef.

Dat klinkt plausibel. OOP-technisch gezien weet ik niet of een categorie een property is. Het product behoort tot een categorie, maar of het dan ook een eigenschap is van het product weet ik niet. Een eigenschap is de kleur geel en de vorm rond. Ik weet niet of een abonnement een eigenschap (property) is. Wellicht druist dit in tegen de OOP-principes, maar daar mogen anderen hun oordeel over vellen :-)

>> En in JS waarmee ik de data ophaal, gewoon filteren en loopen aan de hand van de categorie?

Hoe je dat technisch doet, is aan jou. Ik vind het prettig om views in PHP op te bouwen. Als jij dat in dit geval via JS (ik vermoed AJAX) wil doen, waarschijnlijk vanwege een pop-up dan lijkt me daar niks mis mee.
 
Jorn Reed

Jorn Reed

12/01/2023 12:54:54
Quote Anchor link
Ik bouw dit in een wordpress plugin, dus het makkelijkste voor het live updaten is ajax inderdaad. Verder is het niet een hele geadvanceerde winkelwagen, dus denk dat een property iets als product type, niet heel erg is en ook niet echt de OOP-principes overtreedt.

Maar bedankt voor je tips. Ik ga dat zeker meenemen in het verder ontwikkelen!
 
Ozzie PHP

Ozzie PHP

12/01/2023 13:44:25
Quote Anchor link
Ik zou (indien mogelijk) het wel als category proberen te implementeren, dus een categorie 'Abonnementen' en dat je die categorie bij het aanmaken/instellen van een product in de back-end kunt selecteren. Op die manier kun je ook mooi een categoriepagina maken met alle abonnementen of addons.
 
Jorn Reed

Jorn Reed

12/01/2023 14:23:41
Quote Anchor link
Heb je tips hoe ik dat zou kunnen toepasen, in wordpress bijvoorbeeld kan je taxonomies toepassen (categorie) en die aan een post type koppelen, maar mijn producten zijn geen wordpress items maar gewoon custom code.
 
Ozzie PHP

Ozzie PHP

12/01/2023 15:39:10
Quote Anchor link
Ik gebruik WordPress vrijwel nooit. Aangezien je custom code gebruikt, ben je vrij om te doen wat je wilt lijkt mij. Dus dan zou ik denken aan een 'category' tabel met (auto-increment) ID en name. En via een koppeltabel koppel je dan de producten en categorieën aan elkaar.
 
Jorn Reed

Jorn Reed

12/01/2023 16:06:57
Quote Anchor link
Ik gebruik geen database voor de producten, aangezien de producten uit een api komen. Misschien zou ik aan de hand van de api call of het nou om een addon of membership gaat uit 1 van die meegeleverde productenm een property kunnen uitlezen om het op de juiste plek in de winkel wagen te tonen
 
Ozzie PHP

Ozzie PHP

12/01/2023 18:06:52
Quote Anchor link
>> Ik gebruik geen database voor de producten, aangezien de producten uit een api komen

Wat bedoel je dan? Je hebt ze hardcoded in een bestand opgeslagen?
 
Jorn Reed

Jorn Reed

16/01/2023 09:02:07
Quote Anchor link
Nope, ik haal alles uit een api op. bijvoorbeeld met `/memberships` haal ik alle abonnementen op, met die informatie kan ik bijvoorbeeld een membership id, prijs etc pakken en die in de cart class gebruiken.

Toevoeging op 16/01/2023 09:03:43:

Jorn Reed op 16/01/2023 09:02:07:
Nope, ik haal alles uit een api op. bijvoorbeeld met `/memberships` haal ik alle abonnementen op, met die informatie kan ik bijvoorbeeld een membership id, prijs etc pakken en die in de cart class gebruiken.

Verder sla ik niets tijdelijk op, maar schiet ik alles bijvoorbeeld gelijk in. Op het moment dat de klant betaald via buckaroo. Dan pak ik de gegevens van de winkel wagen en schiet ik dan bijvoorbeeld pas het abonnement/addons in, die de klant heeft gekozen. Deze gegevens worden ook dus in de api opgeslagen en niet een db tabel of kladblok bestand.
 
Ozzie PHP

Ozzie PHP

16/01/2023 11:55:19
Quote Anchor link
Een API gebruikt ook een database ;-)

Maar ik vermoed dus dat je bij een externe partij via een API de producten ophaalt en de verkopen ook via die API registreert.

Maar om terug te komen op je vraag, dan zul je dus inderdaad aan de hand van de productkenmerken moeten vaststellen om wat voor product het gaat.
 
Jorn Reed

Jorn Reed

16/01/2023 12:20:38
Quote Anchor link
Op het moment dat ik bijvoorbeeld de memberships ophaal met de api, dan weet ik in de code dus dat ik de mmembership producten ophaal, aan de hand daarvan kan ik dat makkelijk dus bepalen. Zelfde geldt dan ook voor addons! :)
 
- Ariën  -
Beheerder

- Ariën -

16/01/2023 12:33:25
Quote Anchor link
Ik neem aan dat je niet realtime de memberships vanuit de API ophaalt? Die kan je prima tussentijds opslaan in de database en via een cron updaten.
 
Jorn Reed

Jorn Reed

16/01/2023 12:56:32
Quote Anchor link
Nee dat doe ik helaas niet. Gewoon op het moment dat een gebruiker de pagina op komt. Worden de memberships inheladen via $client->getMemberships().
Vanuit een class die ik heb gemaakt voor de api calls.
 
- Ariën  -
Beheerder

- Ariën -

17/01/2023 11:18:40
Quote Anchor link
En wat als de API wegvalt? Zijn de memberships vaak hetzelfde? Of veranderen die vaak?
Als ze niet vaak veranderen kan je ze toch prima zelf cachen?
 
Jorn Reed

Jorn Reed

17/01/2023 11:41:05
Quote Anchor link
Jup cachen kan, maar als ik de membership niet kan ophalen omdat de api weg valt, dan zou ik ook niet een customer of nieuwe membership aan een customer kunnen toevoegen. Want dit is allemaal connectie met die api.
 
- Ariën  -
Beheerder

- Ariën -

17/01/2023 11:47:04
Quote Anchor link
Gaat alles via de API dan? Kan je misschien wat meer context geven?
Gewijzigd op 17/01/2023 11:47:10 door - Ariën -
 
Jorn Reed

Jorn Reed

23/01/2023 12:09:25
Quote Anchor link
Ja alles gaat via de api. Ik sla zelf niks (ook niet tijdelijk) op. Als ik bijvoorbeeld memberships ophaal, gebruik ik bijvoorbeeld een specifiek membership id uit die call die ik weer mee-schiet met de customer details. En dat wordt dan weer bij die api opgeslagen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.