Ich sitze seit Stunden an einem Problem, das ich einfach nicht lösen kann: Ich möchte, dass beim Schreiben in die DB überprüft wird, ob eine Reihe mit einer bestimmten ID bereits vorhanden ist und wenn ja, soll diese aktualisiert werden, ansonsten soll eine neue Reihe erstellt werden.
Das Formular übergibt mir die ID des Inputs sowie dessen Wert (von 0 bis 2). Bei drei Inputs sieht das so aus:
Array
(
[3] => 0
[7] => 1
[5] => 2
)
Wichtig ist, dass die IDs in keiner chronologischen Abfolge auftreten müssen. In die Datenbank sollen nur Reihen geschrieben werden, die nicht den Wert 0 haben. In obigem Beispiel wären das die [7] und die [5]. Wenn ich dann die DB-Tabelle auslese, erscheint richtigerweise Folgendes:
$dbTable = Array
(
[0] => Array
(
[id] => 7
[value] => 1
)
[1] => Array
(
[id] => 5
[value] => 1
)
)
Bei der nächsten Formular-Übergabe soll das Skript schauen, ob in der DB eine entsprechende ID schon vorhanden ist. Wenn ja, soll der Wert aktualisiert werden, wenn nicht, soll eine neue Reihe erstellt werden. Hingekriegt habe ich nur, dass die richtigen IDs bei Bedarf aktualisiert werden, aber beim Erstellen neuer Reihen schießt mir ein doppelter foreach-Loop quer, denn es werden gleich mehrere Reihen erstellt. Hier der Code-Auszug:
foreach ( $_POST['input'] as $id => $value ) {
foreach ( $dbTable as $key => $row ) {
if ( $row['id'] === ( int ) $id ) {
$ReleasesModel -> update();
}
}
}
Ich bitte um Hilfe! 😞