Mailinglisten-Archive |
A. Narres wrote: >1. Ist es sinnvoll, nicht nur den Warenbestand, sondern auch den >Warenkorbinhalt in (einer) MySQL-Tabelle(n) zu speichern? > Mach es am besten, wie du denkst. Ich habe mehrere Shops gecoded, aber die meiner Meinung nach sinnvollste Lösung wäre es, die Daten in einer Session zu speichern, wenn der Warenkorb nach Verlassen der Seite sowieso geleert werden soll. Beispiel: Du machst dir ne Variable $warenkorb, die du mit session_register('warenkorb') in der Session abspeicherst. Die Variable ist eigentlich ein Array mit der Produkt-Nummer als Schlüssen, z.B. $warenkorb[12345] oder $warenkorb[22222]. Wenn du willst, kannst du sogar ne Produktbeschreibung im Array speichern, also z.B. $warenkorb[12345]['name'] = 'Testprodukt' ,dann musst du nicht jedes Mal die Datenbank bemühen. Bei nem kleinen Shop sollte es keine Probleme geben, bei nem größeren Projekt könnte es andere Lösungen geben, die performanter sind. Aber der Vorteil: Du kannst leicht ein Produkt mit unset($warenkorb[$produkt_id]) löschen und sobald der Benutzer die Seite verlässt, wird die Session automatisch gelöscht. >2. Wenn ja, sollte ich zu diesem Zweck eine Tabelle anlegen, in der >der Warenkorbinhalt aller Benutzer gespeichert wird und anhand ihrer >Session-Id bzw. Warenkorb-Id abgerufen werden kann oder ist es >sinnvoller für jeden Besucher eine eigene Tabelle anzulegen, deren >Name aus der Session-Id bzw. Warenkorb-id besteht? (Oder gibt es eine >weitere, sinnvollere Lösung?) > Neue Tabelle für jeden Benutzer- ja nicht!!! Das wird derart unübersichtlich und widerspricht der Normalisierung von Datenbanken (mehr zum Thema: www.little-idiot.de/mysql). Lege eine Tabelle an, in der du alle Daten abspeicherst - die User findest du anhand ihrer Session- oder Warenkorb-ID wieder... oder du machst es mit Sessions. >3. Unabhängig davon, ob nun eine gemeinsame Warenkorb-Tabelle oder für >jeden Besucher eine eigene Warenkorb-Tabelle angelegt wird, die Daten >sollen natürlich gelöscht werden, wenn der Besucher seine Bestellung >vershcickt hat - aber auch wenn er die Seite verläßt. Wie ich >letzteres am besten realisieren kann, ist mir unklar. Schließlich kann >ich ja nicht feststellen, wenn ein Besucher die Seiten verläßt, ohne >zuvor seinen Warenkorb zu löschen. > Setze einen Timestamp in die Datenbank rein. Und wenn ein Benutzer eine gewisse Zeit (z.B. 1 Stunde) nichts mehr getan hat, kannst du die Daten löschen. Dann sollte er die Seite verlassen haben. Du kannst das realisieren, indem du bei jedem Besucher prüfst, ob ein vorheriger Besucher Produkte im Warenkorb "vergessen" hat, also das festgesetzte Timelimit überschritten hat, wenn ja, löschst du es einfach. Hoffe, geholfen zu haben. Gruss, Ithamar
php::bar PHP Wiki - Listenarchive