Tach!
Ich möchte die Felder später auch wieder füllen können, wenn ein Datensatz bearbeitet wird. Da muss ich mal schauen wie ich dieses machen kann. Ich denke mit
in_array
?
Wohl eher nicht. Die Kunst beim Programmieren ist, die große Aufgabe in kleine Teile zu zerlegen.
Es ist erstmal nicht weiter wichtig, wo die Daten herkommen, die man im Browser zwecks Bearbeitung präsentieren möchte. Es ist im ersten Schritt ausreichend, eine Webseite aus statischem HTML zu bauen. Die wird ein Formular enthalten, für das auch erstmal egal ist, wohin es später abgesendet wird. Auch andere Details kann man später hinzufügen. Essentiell ist aber, dass es Eingabefelder enthält. Und dabei ist der nächste Schritt, wie man die mit bestimmten Werten vorbelegt. Auch das kann man erstmal statisch erledigen, um dabei zu sehen, dass am Ende ein value-Attribut mit ausgefülltem Wert benötigt wird. Das wäre dann also das Ziel, dass man mit PHP ein Formular erstellt, das an genau den gewünschten Stellen die Werte einfügt. Auch hier kann man erstmal konstante Werte von PHP ausgeben lassen, für die man dann im nächsten Schritt eine Abfrage aus der Datenbank hinzufügt.
Wenn ich das richtig sehe, hast du eine paar gleichartige Daten, in vermutlich beliebiger Anzahl, und deswegen hast du da auf ein Array gesetzt. Wenn ja, dann ist foreach eine Möglichkeit, durch dieses zu laufen und für jeden Eintrag ein Eingabefeld ins HTML auszugeben. Auch sowas kann man erstmal mit einem per Hand erstellten Test-Array testweise erstellen.
Wie erkennt man nun beim Zurücksenden des Formulars, welches Eingabefeld zu welchem Datensatz gehört? Ich gehe mal davon aus, die Daten verteilen sich auf mehrere Datensätze einer Tabelle. Man kann dazu die Schreibweise <input name="feld[nummer]">
verwenden. Die Nummer muss nicht fortlaufend sein, sie kann auch der Wert aus dem Primärschlüssel des Datensatzes sein. Darüber kann man dann den zugehörigen Datensatz wiederfinden. In dem Fall wäre dafür foreach in der Variante mit Key und Value die beste Möglichkeit über das $_POST['feld'] zu iterieren. Also
foreach($_POST['feld'] as $id => $value) {
// UPDATE table SET feld=$value WHERE id=$id
}
Zumindest so nach diesem Prinzip, aber dann "richtig" mit Prepared Statement und Übergabe der Daten über Binding. Das Statement muss dazu nur einmal präpariert werden. In der Schleife braucht nur das Bindung und ein Execute zu stehen.
Ich hoffe, ich habe einigermaßen richtig erraten, was du vorhast.
dedlfix.