Speicherschema der Artikel in einem Warenkorb

Tuts4you

Erfahrenes Mitglied
Hallo Leute!
Ich hab da wieder mal ein kleines problem...es handelt sich wieder einmal um sessions!
Ich hoffe ihr könnt mir helfen und bedanke mich gleich mal in vorraus :)

Problembeschreibung:
Ich habe einen eShop programmiert. Zum realisieren der Warenkorb-Funktion muss ich mit sessions arbeiten. Aus diesem Grund übergib ich bei dem link "in den Warenkorb" die Artikelnummer als Variable und die Session ID. Auf der nächsten Seite lese ich dann diese Variable in ein Array ein (weil es ja immer mehr bestellungen sein können, und aus diesem grund auch mehrere ArtikelNr).
Das ganze sieht dann so aus:
PHP:
<?
session_start();
$_SESSION[ArtikelNr][] = $_GET['ArtikelNr'];

for ($i=0; $i<$_SESSION[ArtikelNr]; $i++) {
     echo $_SESSION[ArtikelNr][$i]."<br>"; //die Ausgabe mit einer for-schleife
     }
?>
Jedoch kann ich jetzt die einzelnen Artikel Nummern nicht weiterverwenden...da sie in einem block ausgegeben werden, dh ich kann danach nicht meine DB mit "SELECT Bezeichnung FROM artikel WHERE ArtikelNR = '".$_POST['ArtikelNr']."'"; durchsuchen...

habt ihr vorschläge?

Danke!
 
Zuletzt bearbeitet:
MUZekater hat gesagt.:
Jedoch kann ich jetzt die einzelnen Artikel Nummern nicht weiterverwenden...da sie in einem block ausgegeben werden, dh ich kann danach nicht meine DB mit "SELECT Bezeichnung FROM artikel WHERE ArtikelNR = '".$_POST['ArtikelNr']."'"; durchsuchen...
Kannst du diesen Aspekt bitte etwas genauer erläutern.
 
Gumbo du bist meine Rettung! DANKE!
Ich übergebe nur die ArtikelNr und speichere sie im Array ab. Im Warenkorb selber, lass ich dann die DB nach der Artikelnr durchsuchen, und komme so zu meinen Ergebnissen. Oder hast du einen vielleicht besseren Vorschlag wie ich das lösen könnte?

oder soll ich gleich alles, sprich ArtikelNr, Bezeichnung, Menge und Preis in das Array schreiben...damit ich es dann im Warenkorb verarbeiten kann?
 
Hallo,
meiner Meinung nach sollte es genügen, wenn du nur die Artikelnummer in der Session
speicherst und bei Bedarf den Rest von der Datenbank abfrägst.

mfg
forsterm
 
hallo forstem!
okay, das hab ich mir auch gedacht...jedoch bin ich dann wieder bei meinem problem mit dem array!
Wie kann ich die einzelnen Artikel Nummern verarbeiten....?
 
Die Frage ist, was geschehen soll, wenn sich die Preise während der Bestellung ändern. Soll der Kunde weiterhin den Preis bezahlen, der während der Aufnahme des Artikels in den Warenkorb galt oder der neue, aktuelle Preis? Soll immer der aktuelle Preis gelten, reicht die Artikelnummer und die Artikelanzahl.

Am besten nimmst du dabei die Artikelnummern selbst als Index und die jeweilige Artikelanzahl als Wert. Der Vorteil dessen ist klar: Die Artikelnummer wird einmalig sein und so kann es auch nicht ungewollten Überschreibungen kommen. Und auch die Aktualisierung des Warenkorbs sollte damit einfach sein.
 
ja genau so stelle ich mir das vor...aber wie kann ich das realisieren?
Ist es richtig wie ich die AritkelNr ins Array einlese
 
Mein Vorschlag könnte etwa wie folgt realisiert werden:
PHP:
<?php

	session_start();

	if( !isset($_SESSION['shopping-cart']) ) {
		$_SESSION['shopping-cart'];
	}
	$_SESSION['shopping-cart'][$_GET['Artikelnummer']] = $_GET['Artikelanzahl'];
 
?>
Ausgeben kannst du den Warenkorb mit der foreach-Kontrollstruktur. So kommst du auch an die Artikelnummer.
 
Nur so ne Frage.... Warum speicherst du die Bestellung nicht in der DB unter einer eigenen Tabelle? Das eröfffnet dir viel mehr Möglichkeiten.....
 
du meinst für den warenkorb eine eigene tabelle anzulegen? ja aber wie kann ich die dann genau zuweisen? hab ich mir nämlcih auch schon gedacht, temporär eine zu erzeugen, und bei bestell-abschluss wieder zu löschen, aber da kommt auch noch ein problem auf, was wenn mehrere leute auf einmal etwas bestellen, dann hat jeder vom anderen die artikel drinnen....-(

@ gumbo: danke!
meinst
foreach ($Datensatz as $Feld)
{
echo $Feld
}

werd ich gleich mal ausprobieren
 
Zurück