Antman: Warenkorb funktion

Beitrag lesen

Hallo Tom,

die Kommentare sind doch drin. "dann las mal hören" habe ich nur gesagt, weil ich echt an der Funktion zu knacken habe und du so einfach sagtest es ginge mit nur einer foreach Schleife. Das fand ich sehr demotivierend.

Also an die Funktion gehen zwei Arrays. Diese stammen aus einem Formular. Das erste beinhaltet die Artikelnummern das zweite die Anzahl, die der Benutzer eingegeben hat.
Das Formular ist eine Tabelle. Erste Spalte Artikelnummern und in der zweiten das dazugehörige eingabefeld. Da evntl nur in ein Eingabefeld eine Anzahl eingegeben wurde, schmeißt die for Schleife alle leeren Einträge raus.

Die Foreach Schleife erzeugt aus beiden Arrays ein einziges, dessen Index die Artikelnummer ist und der Wert die Anzahl.

Folgender Code nimmt die Artikelnummern in einem Array $art und holt die Artikel mit den gleichen Artikelnummern aus de DB.

update item counts

$itemNumbers = implode(',', $art);
    $res =& $this->db->query("
        SELECT
     artikelnummer, anzahl
 FROM
     warenkorb
        WHERE
     sid = '".$this->sid."'
        AND
     artikelnummer
 IN
    (".$itemNumbers.")
    ");

$old = array();
if($res->numRows() > 1) {
    while($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
        $old[$row['artikelnummer']] = $row['anzahl'];
   $result =& $this->db->query("
            UPDATE
         warenkorb
            SET
         anzahl = '".$in[$row['artikelnummer']]."'
     WHERE
         sid = '".$this->sid."'
     AND
                artikelnummer = '".$row['artikelnummer']."'
     ");
               }

Das array $old beinhaltet beinhaltet die Artikelnummern die schon in der DB waren. $old benötige ich für einen zweiten Teil der Funktion, den ich nicht gepostet habe und der bereits funktioniert.
In der while Schleife sollen die Artikelnummer aktualisiert werden. Werden sie aber nicht. Sondern es werden, obwohl die Artikelnummern bereits vorhanden sind, neue Zeilen mit derselben angelegt.

Jetzt verständlicher ? :)