Artikleübergabe in einen Warenkorb

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

  • Artikleübergabe in einen Warenkorb

    Guten Abend alle zusammen,

    ich finde den Fehler in meinem Skript einfach nicht.
    Hoffentlich könnt Ihr mir auf die Sprünge helfen.

    Folgende Background-Information. Ich habe eine SQL-Tabelle
    "artikel" mit den Feldern "id, name, bestand, preis" und
    eine Tabelle "warenkorb" mit den Feldern "bestellid,
    kundennummer, artikelid", natürlich auch eine Tabelle "kunden"
    in der unter anderem das Feld "nummer" vorkommt.

    Das Problem ist folgendes: Wenn ich in der Artikelliste auf den
    Link "In den Warenkorb" klicke, soll der Artikel mit Name, Preis
    und Anzahl übernommen werden. Ich scheitere jetzt an der Anzahl.
    Der Warenkorb soll diese anzeigen und bei Doppeltbestellung die
    Anzahl aktualisieren ohne den ganzen Artikel neu zu übernehmen.

    Folgende Fehler tauchen auf:

    1. Anzahl des Artikels erhöht sich nicht, sie steht immer auf 0
    2. nur jeweils ein gewählter Artikel wird angezeigt, die vorher
    gewählten tauchen in der Anzeige nicht mehr auf

    In der Datenbanktabelle "warenkorb" werden aber alle
    gewählten Artikel registriert.

    Hier mal ein Auszug meines Skripts:
    PHP-Code:
    <?php
    session_start
    ();
    include (
    "dbconnect.php");
    include(
    "authentifizierung.php");

    if(!empty(
    $_GET['id']));
    {
    $sql "INSERT into warenkorb (artikelid, kundennummer) 
    values (
    $id, ".$_SESSION['nummer'].")";

    mysql_query($sql) or die(mysql_error());
    }
    $sql "SELECT name, preis, anzahl from artikel, warenkorb 
    WHERE warenkorb.kundennummer="
    .$_SESSION['nummer'].
    AND artikel.id=warenkorb.artikelid"
    ;

    $result mysql_query($sql) or die(mysql_error());
    $row mysql_fetch_assoc($result);

    $anzahl "UPDATE warenkorb SET anzahl=".($row['anzahl']+1).
    WHERE artikelid='
    $artikelid' AND kundennummer='$kundennummer'";
    $result mysql_query($anzahl) or die(mysql_error());

    ?>
    Wo ist mein Denkfehler?

    Gruß Anja
    Zuletzt geändert von Angie3007; 21.05.2006, 20:39.

  • #2
    Welchen Wert hat $id in der INSERT-Query?
    Welchen Wert haben $artikelid und $kundennummer in der UPDATE-Query?

    Wieso wird das UPDATE bedingungslos immer ausgeführt?
    Wieso nicht einfach "SET anzahl = anzahl +1"?
    Zuletzt geändert von onemorenerd; 21.05.2006, 22:04.

    Kommentar


    • #3
      Re: Artikleübergabe in einen Warenkorb

      Original geschrieben von Angie3007
      Guten Abend alle zusammen,


      Der Warenkorb soll diese anzeigen
      Folgende Fehler tauchen auf:

      1. Anzahl des Artikels erhöht sich nicht, sie steht immer auf 0
      2. nur jeweils ein gewählter Artikel wird angezeigt, die vorher
      gewählten tauchen in der Anzeige nicht mehr auf

      In der Datenbanktabelle "warenkorb" werden aber alle
      gewählten Artikel registriert.

      Wo ist mein Denkfehler?

      Gruß Anja
      Es fällt auf, dass der Artikel nochmals INSERTED wird, sogar wenn er schon drin ist ($id). Das führt dazu, dass nochmals der gleiche Artikel mit Stückzahl 0 eingefügt wird. im nach folgenden update werden ausserdem alle records auf 1 gesetzt (bzw. auf gleichviel, je nachdem was inder ersten $row steht).

      Falls die query aus dem Posting für die Ausgabe verwendet wird: sie ist nur für diesen Artikel_id und mit dem alten Bestand. - und nur die erste $row. Eigentlich müssen alle Artikel des Warenkorbs nach dem update erneut aus der DB geholt werden. Ansonsten Anzeigeteil posten.



      sorry für die vielen edits.

      Zuletzt geändert von muh (newbie); 22.05.2006, 00:20.

      Kommentar


      • #4
        Original geschrieben von onemorenerd


        Wieso wird das UPDATE bedingungslos immer ausgeführt?
        Wieso nicht einfach "SET anzahl = anzahl +1"?
        Weil beim Insert nur der Artikel mit anzahl 0 in den Warenkorb gelegt wird.

        Kommentar

        Lädt...
        X