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 ? :)