martin
Well-Known Member
Hi
ich habe ein kleines Problem mit der Reihenfolge der Elemente in einem Array. Eigentlich ist es ganz einfach:
Wie schon erwähnt ist das Array $test so aufgebaut wie die Daten später in der Datenbank. Soweit funktioniert alles wie es soll, bei dem Hinzufügen einer Zeile, wird diese im Object (also im Array) richtig dargestellt.
Soweit so gut. Wenn ich nun aber auf "speichern" klicke, dann werden die Daten vom Object in die Datenbank gespeichert:
Das Ganze funktioniert zwar, aber mit einem Haken. Die Datensätze werden schön gespeichert, aber leider wird bei jedem Speichern die Reihenfolge umgedreht. Das ist seltsam, denn eigentlich sollte doch foreach aufsteigend die einzelnen keys hernehmen, oder?
Um es etwas verständlicher zu machen, hier kurz der Ablauf:
- Eingabe neuer Datensatz mit feld1->wert1 feld2->wert1 feld3->wert1
- Eingabe neuer Datensatz mit feld1->wert2 feld2->wert2 feld3->wert2
- Eingabe neuer Datensatz mit feld1->wert3 feld2->wert3 feld3->wert3
(Keys wurden überprüft, sind 0,1,2) soweit sogut
- Speichern in DB: Speichern funktioniert, wenn ich allerdings die Datenbank abfrage, ohne Sortierung, dann wird zuerst die letzte Zeile/Datensatz ausgegeben, dann die zweite, dann die erste.
Sollte nicht eigentlich der erste eingefügte Datensatz auch als erstes aufgelistet werden? Wie gesagt, ich verwende keine Sortierung!
ich habe ein kleines Problem mit der Reihenfolge der Elemente in einem Array. Eigentlich ist es ganz einfach:
PHP:
$test = Array(); //Array wo alle "Zeilen" der Datenbank zwischengespeichert werden
//Für jeden neuen Datensatz wird also folgendes gemacht!
array_push($test, Array('feld1'=>'wert1','feld2'=>'wert1','feld3'=>'wert1'));
array_push($test, Array('feld1'=>'wert2','feld2'=>'wert2','feld3'=>'wert2'));
array_push($test, Array('feld1'=>'wert3','feld2'=>'wert3','feld3'=>'wert3'));
...
Wie schon erwähnt ist das Array $test so aufgebaut wie die Daten später in der Datenbank. Soweit funktioniert alles wie es soll, bei dem Hinzufügen einer Zeile, wird diese im Object (also im Array) richtig dargestellt.
Soweit so gut. Wenn ich nun aber auf "speichern" klicke, dann werden die Daten vom Object in die Datenbank gespeichert:
PHP:
//vorher werden alle Datensätze in der DB gelöscht....dann folgt:
$stmt = $mysqli->prepare("INSERT INTO `testdb` (`feld1`, `feld2`, `feld3`) VALUES ( ?, ?, ?)");
$stmt->bind_param('sss', $feld1, $feld2, $feld3);
foreach ($test as $key => $value){
$feld1 = $value['feld1'];
$feld2 = $value['feld2'];
$feld3 = $value['feld3'];
$stmt->execute();
}
$stmt->close();
Das Ganze funktioniert zwar, aber mit einem Haken. Die Datensätze werden schön gespeichert, aber leider wird bei jedem Speichern die Reihenfolge umgedreht. Das ist seltsam, denn eigentlich sollte doch foreach aufsteigend die einzelnen keys hernehmen, oder?
Um es etwas verständlicher zu machen, hier kurz der Ablauf:
- Eingabe neuer Datensatz mit feld1->wert1 feld2->wert1 feld3->wert1
- Eingabe neuer Datensatz mit feld1->wert2 feld2->wert2 feld3->wert2
- Eingabe neuer Datensatz mit feld1->wert3 feld2->wert3 feld3->wert3
(Keys wurden überprüft, sind 0,1,2) soweit sogut
- Speichern in DB: Speichern funktioniert, wenn ich allerdings die Datenbank abfrage, ohne Sortierung, dann wird zuerst die letzte Zeile/Datensatz ausgegeben, dann die zweite, dann die erste.
Sollte nicht eigentlich der erste eingefügte Datensatz auch als erstes aufgelistet werden? Wie gesagt, ich verwende keine Sortierung!