2012-04-12 8 views
2

Ich versuche, eine E-Commerce-Website für mein Schulprojekt zu erstellen, aber ich bin verwirrt darüber, wann die Mengen in der Datenbank aktualisiert werden.Wenn ich das Produkt in den Warenkorb legen oder wenn ich die Bestellung abschließe? Menge, wenn ich das Produkt in den Warenkorb hinzufügen und der Kunde die Bestellung nicht abschließen, dann muss ich die Menge wieder erhöhen. So ist die einzige Möglichkeit, die Menge zu aktualisieren, wenn ein Kunde die Bestellung abgeschlossen, und wenn 2 Kunden zum Finale gehen Seite zusammen, um dann eine if-Anweisung zu setzen, um die Menge zu überprüfen, um die Bestellung abzuschließen, und wenn einer der 2 Kunden das letzte Produkt nahm, dann erhält der andere eine Nachricht wie "Wir sind sehr traurig, das letzte verkaufte Produkt 2 Minuten Vor". Ist das der richtige Weg zu denken? Jede andere Idee? (Entschuldigung für mein Englisch.)E-Commerce-Website, PHP, MySQL, Datenbank. Irgendwelche Ideen?

Antwort

0

Dies ist, was eine Race-Bedingung genannt wird.

In einer solchen Situation müssen Sie den Bestand für den ersten Kunden aktualisieren, um ihre Transaktion in einer Transaktion abzuschließen und den anderen Kunden darüber informieren, dass der Bestand verschwunden ist, oder Ihre erste Idee verwenden und den Bestand dekrementieren Kunde storniert Reinkrement. Entweder sollte mit Planung arbeiten.

+0

Danke, so etwas hatte ich in meinen Gedanken, aber ich war nicht sehr sicher, ob ich in die richtige Richtung war, danke ich werde versuchen, den anderen Kunden zu benachrichtigen, wenn der Vorrat weg ist. –

1

Sie haben grundsätzlich zwei Möglichkeiten, die beide gültig sind:

1) Wenn das, was Sie verkaufen etwas in der hohen Nachfrage ist (Sie haben eine begrenzte Menge haben und erwarten, dass viele Benutzer es zu kaufen, wie ein Ticket für ein Konzert oder ein Ticket für einen Flug) Sie können ein Produkt "reservieren", wenn der Benutzer es wählt (so behandelt ticketmaster es). Dies ist immer mit einem Timer mit der Reservierung verbunden, so dass, wenn der Benutzer seinen Kauf nicht abgeschlossen ist, ist der Artikel wieder verfügbar und ein anderer Benutzer kann es kaufen

2) Wenn Sie einen großen Vorrat haben und don Wenn viele Benutzer an einem bestimmten Element interessiert sind, können Sie einfach die Elemente speichern, die der Benutzer in der Sitzung ausgewählt hat. Sobald alles in Ordnung ist, verringern Sie die Anzahl der Elemente in der Datenbank. Hier sollten Sie auch überlegen, wann die Kreditkarte belastet werden soll ... b/c Wenn Sie eine Gebühr erheben und dann abziehen, müssen Sie sie möglicherweise stornieren (mit Kosten für Sie). Also, das ideale Ding in diesem Szenario wäre, den Bestand zu reduzieren und auf den db aufzuladen, wenn Sie nicht die Dinge ausgehen, die der Benutzer bestellt hat. Wenn Sie dies getan haben, sollten Sie dem Benutzer die Situation erklären und ihn "ähnliche Dinge" finden lassen oder tun, was immer Sie für das beste halten. Ich würde jedoch nicht empfehlen, die Rechnung mit den restlichen Sachen zu bearbeiten, die sie nicht machen könnte Sinn für den Benutzer (dh einen PC und ein Bagpack zu kaufen, ist der PC nicht verfügbar ... sollten Sie noch das Bagpack versenden?)

Wie auch immer, ich hoffe, es hilft.

0

Nun, die Antwort auf diese Frage ist sehr eng mit den Richtlinien dieses bestimmten Ladens verbunden. Es gibt ein paar Möglichkeiten:

  • Prevent Nachbestellungen vollständig (wie Sie vorschlagen, so etwas wie eine „Snooze, verlieren Sie“ -Haltung)
  • Split der Auftrag in zwei Teile - die eine, die sofort erfüllt werden können das, und die kann man nicht (man sogar den nachbestellte Teil preauth könnte, und PostAuth wenn es Schiffe)
  • über die Kunden, und lassen Sie sie wählen, was

es gibt ein paar mehr zu tun, aber das ist die Linie der "politischen Entscheidungen", die Sie bewerten müssen.

Wenn es sich um einmalige oder ausgelaufene Artikel handelt, müssen Sie entsprechend anpassen (der Kunde kann natürlich nicht warten, bis er wieder auf Lager ist).

Ich habe es auch getan, wo Kunden anfordern können, benachrichtigt zu werden, wenn der Artikel wieder auf Lager ist.

Ich würde empfehlen zu tun, was maximiert Ihre Conversions und Grenzen Frustration für Ihre Kunden.

0

Ich hatte schon vor einiger Zeit ein ähnliches Problem, als ich versuchte, meinen ersten E-Commerce-Shop zu bauen. Eine der Sachen, die ich tat, war, einen temporären Speicher wie current_stock in der DB zur Verfügung zu stellen und ihn als Pseudobestand zu verwenden. Wenn ein Kunde diesen Artikel in den Warenkorb legt, wird die Menge vom Pseudo-Speicher abgezogen und der tatsächliche Bestand wird bei der Bestellung abgezogen. Der Pseudobestand wird zum sichtbaren Bestand für Benutzer, die die Site durchsuchen.

hoffe es hilft!

Verwandte Themen