Moin!
Programmiersprache ist PERL.
Das ist schade, aber kein Hinderungsgrund. PHP macht das, was du willst, von ganz alleine.
Geplant ist ein Webshop ohne(!) User-Anmeldung.
Sowas habe ich gerade vor einem Monat realisiert.
Das laueft dann so ab: [...]
ok weiter beim User.
Der User hat einen Cookie.
Den kann er haben (macht die Session schöner), er muß es (in PHP) aber nicht.
Und genau da faengt das Problem an:
Wohin mit dem Warenkorb des Users?
In PHP existiert ein Array $_SESSION, in das man beliebige Werte reinspeichern kann. Der PHP-eigene Session-Mechanismus regelt, dass der Inhalt dieses Array beim Beenden des Skriptes in einer Textdatei gespeichert wird, und beim Fortsetzen der Session wieder geladen wird. Auf diese Weise kann man programmiertechnisch diese ganze Speichergeschichte im Prinzip weglassen und ausblenden - man kann einfach davon ausgehen: Wenn das Skript gestartet wird, ist in $_SESSION das drin, was das vorhergehende Skript dort reingespeichert hat.
Wenn du also in diesem Array ein Subarray "Warenkorb" anlegst und dort als Liste "1,5,7" für die selektierten Produkte speicherst, dann wird diese Information mit der Session auf jede weitere Seite mitgenommen, solange bis der Benutzer (der immer noch anonym ist) wieder Sachen rauslöscht oder weitere hinzufügt.
Ach ja: Das Speichern der Anzahl gewählter Produkte wäre natürlich auch nicht verkehrt. Und wenn du es ganz toll machen willst, speicherst du die Informationen der Produkte, die du nicht ständig aus der Datenbank abfragen willst (kostet ja auch Performance), auch gleich mit in die Session - wie beispielsweise den Einzelpreis gewählter Produkte. Daraus kann man dann prima und ohne Datenbankzugriff den Gesamtpreis ausrechnen lassen.
Muss ich eine eigene Zeile in meiner Tabelle in der MySQL-DB
erstellen für diesen User bzw. seinen Warenkorb?
Wenn du die Session-Informationen in einer DB speichern willst, brauchst du dafür logischerweise eine Tabelle.
In PHP ließe sich als Ersatz für das Textdateispeichern sowas auch dranbauen. Diese Lösung würde dann aber immer das gesamte Array $_SESSION speichern müssen, nicht nur den einzelnen Warenkorb. Ich denke, auch unter Perl wäre dies eine wesentlich bessere Lösung, weil du dann problemlos weitere Session-Informationen weitertragen kannst.
Schreibe also eine Funktion, die irgendwoher die Daten, die in der Session (identifiziert durch die ID) gespeichert sind, lädt und in eine oder mehrere Variable packt, und außerdem eine Funktion, die für das Abspeichern sorgt.
Alle Produkte in dem Cookie zu speichern waere auch doof oder?
Speichere nie etwas beim Benutzer, was du auf dem Server speichern kannst.
PHP hat da ja spielchen mit einigen Modulen aber wie gesagt
ich plane das in PERL und von Hand zu machen.
Wie würde es denn "nicht von Hand" gehen?
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)