[PHP] Winkelwagen voorraad in sessie en eruit

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben bezig enkele updates door te voeren aan een winkelwagensysteem dat ik een tijd geleden heb ontwikkeld.
Nu wil ik de voorraad van de artikelen bij kunnen houden. Klanten hoeven niet in te loggen om een winkelwagen te gebruiken. Als ze dus een aantal items in hun winkelwagen hebben geplaatst wil ik het tijdelijk van de voorraad in de database aftrekken.
Dat moet geen probleem zijn, maar nu zit ik met het feit dat bezoekers die stoppen met winkelen (ofwel de sessie niet meer gebruiken) niet hoeven uit te loggen, en ik dus niet precies weet wanneer de sessie wordt vernietigd.

Als de sessie wordt vernietigd moet de voorraad dus weer opgevuld worden indien de items niet besteld zijn.

Ik dacht aan de volgende oplossing:
  • Checken of de sessie ouder is dan x aantal minuten, zo ja sessie verwijderen en voorraad updaten, sessies evt. bijhouden in database
Maar met deze oplossing weet ik nog steeds niet hoe ik kan herkennen dat de bezoeker zijn venster al heeft gesloten. Ik wil hiervoor ook geen JavaScript gebruiken.

Hoe kan ik dit het beste aanpakken?

edit:
De titel heeft een -r- teveel, maar ik kan het niet wijzigen...

[ Voor 4% gewijzigd door Verwijderd op 13-07-2004 12:57 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou dan idd in de db een sessietable oid gaan gebruiken waar je de inhoud van een winkelwagen kan plaatsen. Bij elke actie van de bezoeker update je een timefield die bij die sessie hoort en werk je je voorraad bij op bassis van sessies die ouder zijn dan x minuten, die sessies gooi je dan weer uit je sessiontable... Je hoeft dan opzich in je session niet meer bij te houden welke artikelen de bezoeker in z'n mandje heeft want die kan je uit de db trekken met een simpele query...

Er zijn wel meer versies te verzinnen, maar bovenstaande zou een implementatie kunnen zijn.

Verder vraag ik me af of het slim is om de voorraad op basis van wat mensen in de winkelwage hebben te bepalen, maar goed daar heb je vast een goeie reden voor...

[ Voor 2% gewijzigd door Verwijderd op 13-07-2004 13:21 . Reden: paar typo's bijgewerkt.... ]


Acties:
  • 0 Henk 'm!

  • -Odysseus-
  • Registratie: Oktober 2002
  • Laatst online: 21-01-2009
Wat Sooterd aangeeft is misschien wel de enige/beste oplossing. Maar dit is natuurlijk verre van ideaal. Je moet heel de database doorlopen om te kijken wat je vooraad is op zo'n manier, ipv. alleen in je producten-table kijken.
Ik raad je ook aan om de vooraad niet op deze manier te berekenen.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
Verwijderd schreef op 13 juli 2004 @ 12:57:
Ik dacht aan de volgende oplossing:
  • Checken of de sessie ouder is dan x aantal minuten, zo ja sessie verwijderen en voorraad updaten, sessies evt. bijhouden in database
Maar met deze oplossing weet ik nog steeds niet hoe ik kan herkennen dat de bezoeker zijn venster al heeft gesloten. Ik wil hiervoor ook geen JavaScript gebruiken.
Zonder javascript kun je niet te checken of de gebruiker zijn venster heeft gesloten. Mét javascript zou ik er nog niet van uitgaan voor de bedrijfsvoorraad, wat als iemand JS heeft uitstaan?

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
T-MOB schreef op 13 juli 2004 @ 13:20:
[...]

Zonder javascript kun je niet te checken of de gebruiker zijn venster heeft gesloten. Mét javascript zou ik er nog niet van uitgaan voor de bedrijfsvoorraad, wat als iemand JS heeft uitstaan?
Juist, dat was eigenlijk de enige reden waarom ik dat noemde. ;)
Ik hoef niet per se te herkennen dat het venster is afgesloten, alleen maar of de sessie niet meer wordt ververst.

De reden waarom de voorraad moet worden bijgewerkt wanneer er iets in de winkelwagen is geplaatst is omdat het om kleine artikelen gaat (Magic kaarten), waarvan de voorraad beperkt is en niet per kaart besteld kunnen worden.

Ik ga even stoeien met de eerste oplossing, bedankt voor de hulp!