Geschrieben von Startpost-Retter am 05.07.2010 um 21:36:
Mehrere Daten kopieren SQL / EDIT
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
Geschrieben von Stelo am 14.07.2010 um 18:29:
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?