Hallo zusammen,
ich bin gerade dabei einen kleinen Warenkorb zu schreiben mit MySQL Datenbank. (Ich weiß das ganze kann man auch ganz einfach mit Sessions lösen, aber würde es gern mit einer Datenbank machen)
In der unten stehenden Funktion, soll ein Artikel zum Warenkorb hinzugefügt werden. Falls der User noch garnicht im Table `cart` gefunden wird, soll der Artikel via INSERT hinzugefügt werden. Sollte jetzt der User doch gefunden werden, frage ich ob der Artikel den ich gerade hinzufügen will schon vorhanden ist. Falls ja soll die Menge um 1 erhöht werden, anderenfalls der Artikel wieder über INSERT hinzugefügt werden.
Mein Problem ist nun folgendes:
Wenn die Datenbank leer ist und ich beispielsweise den Artikel mit der Nummer 1 hinzufüge, funktioniert das script einwandfrei. Das heißt: bei weiterem hinzufügen wird der Artikel um 1 erhöht.
Will ich nun aber beispielsweise den Artikel 2 danach hinzufügen, funktioniert die INSERT methode auch. Nur beim zweiten mal wird der Artikel dann wieder mit INSERT hinzugefügt statt UPDATE um eins erhöht.
Wo liegt der Fehler? Ist die Weise wie ich das Prüfe vielleicht komplett falsch?
Danke im vorraus!
ich bin gerade dabei einen kleinen Warenkorb zu schreiben mit MySQL Datenbank. (Ich weiß das ganze kann man auch ganz einfach mit Sessions lösen, aber würde es gern mit einer Datenbank machen)
In der unten stehenden Funktion, soll ein Artikel zum Warenkorb hinzugefügt werden. Falls der User noch garnicht im Table `cart` gefunden wird, soll der Artikel via INSERT hinzugefügt werden. Sollte jetzt der User doch gefunden werden, frage ich ob der Artikel den ich gerade hinzufügen will schon vorhanden ist. Falls ja soll die Menge um 1 erhöht werden, anderenfalls der Artikel wieder über INSERT hinzugefügt werden.
PHP-Code:
public function insertArticle($db, $customer_id, $product_id, $product_name, $product_short_description, $product_price, $product_quantity){
$stmt = $db->prepare("SELECT * FROM cart WHERE customer_id = ?");
$stmt->execute(array($customer_id));
$row = $stmt->fetch();
if($row != false) {
if($product_id == $row['product_id']){
$new_quantity = $row['product_quantity'] + $product_quantity;
$price_total = $row['product_price'] + $row['product_total'];
$stmt_update = $db->prepare("UPDATE cart SET product_quantity = ?, product_total = ? WHERE id = ?");
$stmt_update->execute(array($new_quantity, $price_total, $row['id']));
}else{
$insert_price_total = $product_price * $product_quantity;
$stmt_insert = $db->prepare("INSERT INTO cart (customer_id, product_id, product_name, product_short_description, product_price, product_quantity, product_total) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt_insert->execute(array($customer_id, $product_id, $product_name, $product_short_description, $product_price, $product_quantity, $insert_price_total));
}
}else{
$insert_price_total_two = $product_price * $product_quantity;
$stmt_insert_two = $db->prepare("INSERT INTO cart (customer_id, product_id, product_name, product_short_description, product_price, product_quantity, product_total) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt_insert_two->execute(array($customer_id, $product_id, $product_name, $product_short_description, $product_price, $product_quantity, $insert_price_total_two));
}
}
Mein Problem ist nun folgendes:
Wenn die Datenbank leer ist und ich beispielsweise den Artikel mit der Nummer 1 hinzufüge, funktioniert das script einwandfrei. Das heißt: bei weiterem hinzufügen wird der Artikel um 1 erhöht.
Will ich nun aber beispielsweise den Artikel 2 danach hinzufügen, funktioniert die INSERT methode auch. Nur beim zweiten mal wird der Artikel dann wieder mit INSERT hinzugefügt statt UPDATE um eins erhöht.
Wo liegt der Fehler? Ist die Weise wie ich das Prüfe vielleicht komplett falsch?
Danke im vorraus!
Kommentar