Hallo in die Runde,
in einem von mir erstellten Shop-System (auf PHP/MySQL-Basis) tritt jetzt nach 4-monatigem Einsatz und steigender Besucherzahl desöfteren das Problem auf, das 2 Kunden einen Artikel bestellen, der nur noch 1x "on stock" ist.
Dies möchte ich natürlich verhindern, da es unnötigen Aufwand verursacht.
Ich versuche mal den Bestellvorgang etwas detaillierter zu beschreiben:
1. User betritt die Seite, bekommt eine Session-Id.
2. Er loggt sich ein (ohne einloggen -> kein Warenkorb/kein bestellen).
3. Er legt einen Artikel in den Warenkorb (nur möglich bei Artikelmenge >0)
4. Er geht "zur Kasse", wählt Zahlmethode, Versandart und Lieferadresse (vorher im User-Profil gespeichert)
5. Er bestellt
Bei 5. passiert eigentlich das relevante:
-in der Tabelle 'orders' wird für jeden Artikel ein Eintrag angelegt, mit gleichbleibender Bestellnummer, User-id, Artikel-id, bestellter Anzahl und den restlichen für die Bestellung relevanten Daten
-die Anzahl der bestellten Artikel in der Datenbank wird nach unten korrigiert, also "bisherige Anzahl - bestellte Anzahl".
Und hier, bzw. auch beim "in den Warenkorb legen" des Artikels ist sicherlich das Problem.
Es wird ja nur beim Reinlegen überprüft, ob der Artikel vorhanden ist oder nicht. Liegt er einmal drin, kann er bestellt werden.
Sind nun 2 Leute jeweils ne halbe Stunde im Shop unterwegs, und deren aktive Zeiten überschneiden sich (sprich, der eine legt den Artikel in den Warenkorb und bestellt noch nicht, inzwischen legt der andere den Artikel auch rein), kommt es zur oben genannten Problematik.
Hoffe ich habe das verständlich beschrieben...
Muss noch dazusagen, nach 1h Inaktivität wird der User automatisch ausgeloggt und der Warenkorb geleert.
Hat jemand von euch vielleicht eine Idee, für eine Art Workaround oder so?
Artikelanzahl beim reinlegen in den Korb runterzusetzen ist Mist, da könnte ja einer Ärger machen wollen und alles mögliche reinlegen, dann einfach nicht bestellen.
Ich dachte vielleicht daran die Inaktivitätsgrenze nach unten zu korrigieren...auf vielleicht 15 Minuten. Würde eventuell einiges eindämmen, aber das ganze nicht wirklich umgehen.
Danke schon mal im Voraus, wenn sich jemand mal nen Kopf macht
in einem von mir erstellten Shop-System (auf PHP/MySQL-Basis) tritt jetzt nach 4-monatigem Einsatz und steigender Besucherzahl desöfteren das Problem auf, das 2 Kunden einen Artikel bestellen, der nur noch 1x "on stock" ist.
Dies möchte ich natürlich verhindern, da es unnötigen Aufwand verursacht.
Ich versuche mal den Bestellvorgang etwas detaillierter zu beschreiben:
1. User betritt die Seite, bekommt eine Session-Id.
2. Er loggt sich ein (ohne einloggen -> kein Warenkorb/kein bestellen).
3. Er legt einen Artikel in den Warenkorb (nur möglich bei Artikelmenge >0)
4. Er geht "zur Kasse", wählt Zahlmethode, Versandart und Lieferadresse (vorher im User-Profil gespeichert)
5. Er bestellt
Bei 5. passiert eigentlich das relevante:
-in der Tabelle 'orders' wird für jeden Artikel ein Eintrag angelegt, mit gleichbleibender Bestellnummer, User-id, Artikel-id, bestellter Anzahl und den restlichen für die Bestellung relevanten Daten
-die Anzahl der bestellten Artikel in der Datenbank wird nach unten korrigiert, also "bisherige Anzahl - bestellte Anzahl".
Und hier, bzw. auch beim "in den Warenkorb legen" des Artikels ist sicherlich das Problem.
Es wird ja nur beim Reinlegen überprüft, ob der Artikel vorhanden ist oder nicht. Liegt er einmal drin, kann er bestellt werden.
Sind nun 2 Leute jeweils ne halbe Stunde im Shop unterwegs, und deren aktive Zeiten überschneiden sich (sprich, der eine legt den Artikel in den Warenkorb und bestellt noch nicht, inzwischen legt der andere den Artikel auch rein), kommt es zur oben genannten Problematik.
Hoffe ich habe das verständlich beschrieben...
Muss noch dazusagen, nach 1h Inaktivität wird der User automatisch ausgeloggt und der Warenkorb geleert.
Hat jemand von euch vielleicht eine Idee, für eine Art Workaround oder so?
Artikelanzahl beim reinlegen in den Korb runterzusetzen ist Mist, da könnte ja einer Ärger machen wollen und alles mögliche reinlegen, dann einfach nicht bestellen.
Ich dachte vielleicht daran die Inaktivitätsgrenze nach unten zu korrigieren...auf vielleicht 15 Minuten. Würde eventuell einiges eindämmen, aber das ganze nicht wirklich umgehen.
Danke schon mal im Voraus, wenn sich jemand mal nen Kopf macht
![Smilie](https://www.php-resource.de/forum/core/images/smilies/smile.gif)
Kommentar