Ankündigung

Einklappen
Keine Ankündigung bisher.

Warenkorb insert Methode funktioniert nicht richtig

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Warenkorb insert Methode funktioniert nicht richtig

    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.

    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!



  • #2
    Zitat von ero Beitrag anzeigen
    Wo liegt der Fehler?
    Du holst zum Prüfen zwar alle Datensätze des Kunden (mit »SELECT *«, pfui!), prüfst aber nur den ersten Datensatz. Aber wozu überhaupt die if-else-Konstruktion? INSERT ... ON DUPLICATE KEY UPDATE existiert …

    Kommentar


    • #3
      Wenn das erste Produkt im Warenkorb nicht das gesuchte ist, wird halt eingefügt.
      Du musst erstmal den gesamten Warenkorb durchsuchen, ob das Produkt vorhanden ist.
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        [QUOTE]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/QUOTE]

        moin ero

        bitte poste sql bei sql - berechnungen etc lassen sich elengt mit dbs abfackeln.
        und bitte lese den fvorgerschrittenen announce bevor du wieder etwas unter fotgeschritten postst.

        wir wissen weder etwas über dein db desing noch über deine fragestellung.

        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.

        1x artikel 1
        1x artikel 2

        == zwei artikel - einmal 1 einmal 2


        im warenkorb nicht die artikel +1 machen, sondern die artikel zählen (dein anderer thread)

        Kommentar

        Lädt...
        X