phpbar.de logo

Mailinglisten-Archive

[php] <Betreff =?ISO-8859-1?Q?verst=FCmmelt?= ;)>... und MySQL

[php] ... und MySQL

I.Garbe php_(at)_phpcenter.de
Mon, 15 Apr 2002 12:01:56 +0200


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