dwex
Erfahrenes Mitglied
Hallo Leute,
ich versuche mich gerade ein einem Warenkorb.
Wenn man einen Artikel hinzufügt, welcher bereits in Warenkorb vorhanden ist soll einfach die Menge des (im Warenkorb) vorhandenen Artikels mit der Menge aus dem $_POST-Array addiert werden.
Dazu habe ich folgenden Quelltext geschrieben:
ACHTUNG: Bitte nicht von $section_id irritieren lassen - dies ist die Artikelnummer!
So wenn ich nun meinen ersten Artikel (z.b. 1 Stück) hinzfüge dann funktioniert das bestens.
Wird dann ein zweiter (anderer) Artikel (z.b. 3 Stück) hinzugefügt dann wird grundsätzlich dessen Menge verdoppelt.
Wenn ich jetzt für den zweiten hinzugefügten Artikel wieder ein Post-Array sende um die Anzahl (z.b. 1 Stück) zu addieren dann funktioniert das jedoch macht er mir dann auch noch zusätzlich einen weiteren Artikel in das Warenkorb-Array.
Erstaunlicherweise wenn ich den ersten Artikel über ein Post-Array wieder sende (z.b. 12 Stück) dann addiert er mir das zum richtigen Artikel und macht kein weiteres Array in den Warenkorb.
Kann mir bitte jemand die Tomaten von meinen Augen nehmen - ich finde den Fehler hier nicht.
Vielen Dank für eure Mühen im Voraus!
ich versuche mich gerade ein einem Warenkorb.
Wenn man einen Artikel hinzufügt, welcher bereits in Warenkorb vorhanden ist soll einfach die Menge des (im Warenkorb) vorhandenen Artikels mit der Menge aus dem $_POST-Array addiert werden.
Dazu habe ich folgenden Quelltext geschrieben:
ACHTUNG: Bitte nicht von $section_id irritieren lassen - dies ist die Artikelnummer!
PHP:
if($_POST['action'] == 'add') {
if(!$_SESSION['warenkorb']) { // Prüfen ob Warenkorb in der Session schon existiert - wenn nicht dann einen Artikel in die Variable schreiben
$postvariablen = array("section_id" => $_POST['section_id'], "artikelname" => $_POST['artikelname'], "artikelpreis" => $_POST['artikelpreis'], "menge" => $_POST['menge']);
$_SESSION['warenkorb'][] = $postvariablen;
} else { // Wenn Warenkorb bereits exisitiert dann Prüfen ob Artikel bereits in der Variable und dann Hinzufügen oder Updaten
for($i=0; $i<count($_SESSION['warenkorb']); $i++) { // Warenkorb mit Schleife durchsuchen
if( $_SESSION['warenkorb'][$i]['section_id'] == $_POST['section_id']) { // Wenn ID im Warenkorb gefunden dann Menge addieren
$menge = $_SESSION['warenkorb'][$i]['menge'] + $_POST['menge'];
$postvariablen = array("section_id" => $_POST['section_id'], "artikelname" => $_POST['artikelname'], "artikelpreis" => $_POST['artikelpreis'], "menge" => $menge);
$_SESSION['warenkorb'][$i] = $postvariablen;
break;
} else { // Wenn ID im Warenkorb nicht gefunden dann Artikel hinzufügen
$postvariablen = array("section_id" => $_POST['section_id'], "artikelname" => $_POST['artikelname'], "artikelpreis" => $_POST['artikelpreis'], "menge" => $_POST['menge']);
$_SESSION['warenkorb'][] = $postvariablen;
}
}
}
}
So wenn ich nun meinen ersten Artikel (z.b. 1 Stück) hinzfüge dann funktioniert das bestens.
Code:
Array
(
[0] => Array
(
[section_id] => 12
[artikelname] => Superdrache \"Herbie\"
[artikelpreis] => 17.90
[menge] => 1
)
)
Wird dann ein zweiter (anderer) Artikel (z.b. 3 Stück) hinzugefügt dann wird grundsätzlich dessen Menge verdoppelt.
Code:
Array
(
[0] => Array
(
[section_id] => 12
[artikelname] => Superdrache \"Herbie\"
[artikelpreis] => 17.90
[menge] => 1
)
[1] => Array
(
[section_id] => 16
[artikelname] => Ein weiterer Drache
[artikelpreis] => 158.90
[menge] => 6
)
)
Wenn ich jetzt für den zweiten hinzugefügten Artikel wieder ein Post-Array sende um die Anzahl (z.b. 1 Stück) zu addieren dann funktioniert das jedoch macht er mir dann auch noch zusätzlich einen weiteren Artikel in das Warenkorb-Array.
Code:
Array
(
[0] => Array
(
[section_id] => 12
[artikelname] => Superdrache \"Herbie\"
[artikelpreis] => 17.90
[menge] => 1
)
[1] => Array
(
[section_id] => 16
[artikelname] => Ein weiterer Drache
[artikelpreis] => 158.90
[menge] => 7
)
[2] => Array
(
[section_id] => 16
[artikelname] => Ein weiterer Drache
[artikelpreis] => 158.90
[menge] => 1
)
)
Erstaunlicherweise wenn ich den ersten Artikel über ein Post-Array wieder sende (z.b. 12 Stück) dann addiert er mir das zum richtigen Artikel und macht kein weiteres Array in den Warenkorb.
Code:
Array
(
[0] => Array
(
[section_id] => 12
[artikelname] => Superdrache \"Herbie\"
[artikelpreis] => 17.90
[menge] => 13
)
[1] => Array
(
[section_id] => 16
[artikelname] => Ein weiterer Drache
[artikelpreis] => 158.90
[menge] => 7
)
[2] => Array
(
[section_id] => 16
[artikelname] => Ein weiterer Drache
[artikelpreis] => 158.90
[menge] => 1
)
)
Kann mir bitte jemand die Tomaten von meinen Augen nehmen - ich finde den Fehler hier nicht.
Vielen Dank für eure Mühen im Voraus!