Sven Rautenberg: Warenkorb mit Sessions anstatt mit MySQL

Beitrag lesen

Yo!

Weiterer Output für den Besucher (also die erneute, jetzt ergänzte Ausgabe des Warenkorbinhaltes) wird man sinnvollerweise basierend auf der Variablen generieren.
Wie meinst Du das?

Hole Warenkorb der Session (mit session_start()).

  • Ergänze Warenkorb um die jetzt abgeschickte Bestellung.
    = aktueller Warenkorb ist gespeichert.

Wenn jetzt der Warenkorb ausgegeben werden soll, schreibst du den Inhalt der Warenkorbvariablen auf den Bildschirm. Genauso, wie du vorher SELECT * FROM tabelle WHERE Sessionid gemacht hast.

Ich speicher so wie oben ja nur die produktID als key, und die Anzahl als value im warenkorb-array, ist jetzt die Frage ob das reicht, und so bei jeder Ausgabe die restlichen Daten(Preis, Bezeichnung...) aus der DB ausgelesen werden müssen, oder ob man nicht nur die produktID und Anzahl speichert, sondern einen eigenen Array für jeden Artikel im warenkorb_array, und darin alles notwendige speichert und so immer ausgeben kann, ohne sich mit der DB zu verbinden. Was meinst Du dazu?

Wozu sonst wäre die Umstellung auf die Sessions gut? Ziel war doch, weniger mit der Datenbank zu arbeiten. Wenn du aber nur rudimentäre Daten in der Session hälst und im Zweifel immer wieder die Datenbank befragen mußt, was der Warenkorb in menschlichen Worten bedeutet, dann ist nicht viel gewonnen.

Allerdings soll's ja angeblich ein Datenmaximum für Sessiondaten geben. Ich kann dazu nicht viel sagen, ich habe nichts gegen ein ständiges Befragen und Befüllen der Datenbank einzuwenden - und somit dein Problem nicht. :)

Endet das Skript, dann wird der aktuelle Zustand der Variablen wieder gespeichert. Fertig.
Genau, aber erst dann, wenn ich die Ausgabe vorher will geht das ja nicht, aber da ich die Variable ja speichere, kann ich ja ohne auf die Session zuzugreifen den aktuellen 'Wert' des Arrays auslesen.

Häh? Du hast eine in der Session gespeicherte Variable. Die steht am Anfang des Skriptes zur Verfügung. Du schreibst weitere Werte in die Variable hinein. Du liest die komplette Variable für eine Ausgabe aus. Und durch das Skriptende wird der (geänderte) Inhalt der Variablen zum nächsten Skript hinübergerettet. Wo ist da das Problem?

Wenn du natürlich lesens über $_SESSION zugreifst, dann solltest du auch schreibend dort die Veränderung vornehmen. Wenn das nicht möglich ist, weil du komplexe Variablen so nicht ansprechen kannst, dann nimm doch lieber die Originalvariable und überlasse das Rauspfriemeln und Abspeichern in der Session PHP. :)

- Sven Rautenberg