[PHP & MySQL] Mehrere Daten kopieren SQL / EDIT

Startpost-Retter
Hallo ;D
Ich habe ein Problem mit meinem Shop :>

Zunächst werden die Produkte, die das Mitglied auswählt, in die Tabelle warenkorb gespeichert.
Diese Tabelle besteht aus:

wkid | login | pid | artikelbez | kategorie | art | menge | stkpreis

Funktioniert bisher auch mit editieren, löschen usw. ohne Probleme.

Nachdem das Mitglied nun auf bestellen geklickt hat, sollen diese Sachen in die Tabelle zubehoer gespeichert werden. Allerdings nur, wenn das Produkt dem Mitglied nicht schon gehört. Besitzt er dieses Produkt bereits, soll die Menge aktualisiert werden.
Diese Tabelle besteht aus:

zid | id | pid | artikelbez | kategorie | art | menge | pferd

Der dafür verwendete Code ist:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
if (isset($_POST["bestellen"])) {
$pferd $_POST["pferd"];



    $warenkorb mysql_query("SELECT * FROM warenkorb WHERE login = '$login'");
    while($row_wk mysql_fetch_array($warenkorb)) {
    $login_wk $row_wk["login"];
    $pid_wk $row_wk["pid"];
    $artikelbez_wk $row_wk["artikelbez"];
    $kategorie_wk $row_wk["kategorie"];
    $art_wk $row_wk["art"];
    $menge_wk $row_wk["menge"];
    }
    
    $zubehoer mysql_query("SELECT * FROM zubehoer WHERE id = '$login' AND pid = '$pid_wk'");
    while($row_zh mysql_fetch_array($zubehoer)) {
    $id_zh $row_zh["id"];
    $pid_zh $row_zh["pid"];
    $mitglied_zh $row_zh["mitglied"];
    $artikelbez_zh $row_zh["artikelbez"];
    $kategorie_zh $row_zh["kategorie"];
    $art_zh $row_zh["art"];
    $menge_zh $row_zh["menge"];
    }
    $num mysql_num_rows($zubehoer);
    
    if ($num == "0") {
    mysql_query("INSERT INTO zubehoer (id, pid, artikelbez, kategorie, art, menge, pferd) SELECT login, pid, artikelbez, kategorie, art, menge, '".$pferd."' FROM warenkorb WHERE login = '$login' AND art = 'pferd'") or die(mysql_error());
    mysql_query("INSERT INTO zubehoer (id, pid, artikelbez, kategorie, art, menge) SELECT login, pid, artikelbez, kategorie, art, menge FROM warenkorb WHERE login = '$login' AND art <> 'pferd'") or die(mysql_error());
    } else {
    mysql_query("UPDATE zubehoer SET menge=menge+$menge_wk WHERE id = '$login' AND pid = '$pid_wk'") or die(mysql_error());
    }

    echo "<p>Vielen Dank für deine Bestellung.</p>";
    include("footer.php");
    exit;
}


Das Eintragen neuer Dateien funktioniert soweit, allerdings kommen jetzt gleich mehrere Probleme, die ich einfach nicht bewältigt bekomme.

1. Beim UPDATE Befehl ändert er mir grundsätzlich nur einen Datensatz. Allerdings sollen alle Daten vom Zubehör geupdatet werden, die sich derzeit im Warenkorb befinden.

2. Wenn das Mitglied ein Produkt um eins erhöhen will (also sich ein bereits vorhandenes Produkt noch einmal kauft), dabei aber zwei neue Artikel im Warenkorb hat, würde durch die If-Anweisung nur der eine Artikel geupdatet werden, die anderen zwei würden verworfen werden, denn: $num wäre durch den einen erhöhten Artikel nicht mehr 0. Allerdings kann nichts geupdatet werden, was nicht vorhanden ist.

3. Die Mitglieder sollen später das Zubehör für ein bestimmtes Pferd ihrer Wahl kaufen können. Im Moment funktioniert es mit dem neuen Eintragen gut; es wird der Pferdename nur in die Spalte "Pferd" geschrieben, wo die "Art" des Produkt gleich "pferd" ist.
Das Eintragen ist also nicht das Problem, allerdings eben auch wieder das Updaten, da er das Produkt nur dann Updaten soll, wenn $pferd dem eingetragenen Pferd im Produkt der Zubehörtabelle entspricht.

So, ich hoffe das konnte man verstehen :/ Nach 4 stunden Verzweiflung steh ich etwas neben mir.

LG
Nella
Stelo
Also hab es noch nicht geschafft, mich in den ganzen Code einzulesen, aber was mich gerade ein wenig verwirrt ...

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
$warenkorb mysql_query("SELECT * FROM warenkorb WHERE login = '$login'");
    while($row_wk mysql_fetch_array($warenkorb)) {
    $login_wk $row_wk["login"];
    $pid_wk $row_wk["pid"];
    $artikelbez_wk $row_wk["artikelbez"];
    $kategorie_wk $row_wk["kategorie"];
    $art_wk $row_wk["art"];
    $menge_wk $row_wk["menge"];
    }
    
    $zubehoer mysql_query("SELECT * FROM zubehoer WHERE id = '$login' AND pid = '$pid_wk'");

Du schließt doch die erste while-Schleife bevor du die Daten in dem zweiten Query vergleichst, oder? Somit vergleichst du ja nur EINMAL $pid_wk mit dem Query. Denn die Variablen in der ersten Schleife werden ja immer wieder überschrieben und nur die letzte bleibt sozusagen übrig.
Ist das Absicht?