SQL UPDATE schreibt nur eine Zeile

dessauer

Newbie
Registriert
März 2016
Beiträge
2
[Gelöst]UPDATE schreibt nur eine Zeile

Hallo zusammen,

ich habe folgendes Problem.

Derzeit arbeite ich mit dem CMS "Websitebaker" und dem Modul "bakery". Hier habe ich eine Storno Funktion erstellt, welche bei Stornierung, die Quantity der Item's wieder korrekt aufstocken soll.

Soweit funktioniert das auch, lediglich schreibt die UPDATE Funktion nur die erste Zeile der besagten Tabelle korrekt (füllt den Stock wieder korrekt auf).

Aber wenn man zB mehrere Artikel bestellt hat, so sollte die UPDATE funktion dann schon alle betroffenen Items der Order wieder korrekt auffüllen.

Hier habe ich mal den Code aus der Datei:

PHP:
// Loop through the orders... 
foreach ($_POST['status'] as $order_id => $status) {
	$status = $admin->add_slashes(strip_tags($status));
	// ...and update status
	$database->query("UPDATE ".TABLE_PREFIX."mod_bakery_customer SET status = '$status' WHERE order_id = '$order_id'");
	
	//Nimmt alle Daten aus der mod_bakery_order Tabelle die zu der Order gehören
	$query_item = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_bakery_order WHERE order_id = '$order_id'");
	$item = $query_item->fetchRow();

	
	//Variablen Definieren mit den Values aus der Table
	$item_id = $item['item_id'];
	$item_quant = $item['quantity'];
	
	//Nimmt alle Daten aus der mod_bakery_items Tabelle die zu der Item_ID gehören
	$query_stock = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_bakery_items WHERE item_id = '$item_id'");
	$stock = $query_stock->fetchRow();

	//Stock wird hier berechnet
	$oldStock = $stock['stock'];
	$newStock = $oldStock + $item_quant;
	
	
	//Wenn Status = Storniert wird der Stock wieder aufgefüllt mit der Anzahl der in der Order bestellten Menge
	if($status == 'canceled'){ 

		$database->query("UPDATE ".TABLE_PREFIX."mod_bakery_items SET stock = '$newStock' WHERE item_id = '$item_id'");

	}

}

Vielleicht hat von Euch jemand eine Ahnung, was genau ich hier machen kann. Ich denke, es liegt daran, dass keine Schleife eingebaut ist, aber mit Schleifen bin ich so Ratlos, wie ein Vogel beim Schwimmen.

Ich bedanke mich schon jetzt für Eure Antworten.
 
Zuletzt bearbeitet: (Gelöst)
Du iterierst nicht über die einzelnen items, daher wird nur das Erste der Bestellung bearbeitet.

Ist das nur ein Test oder soll dein Modul auch ins Web? Denn so (direkt mit den POST-Variablen ohne Validierung zu arbeiten) sollte das nicht auf die Allgemeinheit losgelassen werden!
 
Hallo iamunknown,

danke für deine Antwort. Hast du eine Lösung, wie ich das mit den Items lösen kann?

Naja das Modul mit dem "Post" war vorher schon, das habe ich nicht geschrieben. Ist tatsächlich auch so publiziert worden vom Ersteller.

Meine Zeilen sind die in deutsch kommentierten.

Greetz

//Edit:
Ich habe jetzt ein wenig mehr Probiert und Möglichkeiten gestet- So wie es aussieht, habe ich das Problem nun doch auf eigenen Wege lösen können :) Danke dennoch für die Bemühungen
 
Zuletzt bearbeitet: (Lösung)
Zurück
Oben