dedlfix: Formular und Datenbank

Beitrag lesen

echo $begrüßung;

Formluar Feld, in dem die Werte aus der Datenbank in einem Textfeld wiedergegeben werden.
Keine Ahnung wie

Wie du so ein Element in HTML erstellst, weißt du? Wie du ein solches Element mit Daten vorbelegst, weißt du? Nun, mit PHP musst du genau solch einen HTML-Code erzeugen. Achte dabei darauf, dass hier ein Kontextwechsel auftritt. Die Daten aus der Datenbank werden nun im Kontext "HTML" ausgegeben. Dazu sind einige Sonderzeichen (<, >, & und ") zu behandeln, damit sie nicht als HTML-Code-Bestandteil interpretiert werden. htmlspecialchars() kümmert sich um die HTML-gerechte Behandlung von Strings.

Was ich machen möchte ist es, die Daten in einem Textfeld auszugeben, um dann per Browser die Werte in jenem Textfeld zu verändern, um dann wiederrum den neuen Wert im Textfeld zu speichern.

Für dich sieht das wie ein geschlossener Vorgang aus. Für den Webserver ist es das nicht. Er fragt in einem Vorgang die Daten ab und gibt sie aus und nimmt in einem anderen Vorgang Daten entgegen und schreibt sie in die Datenbank. Zwischendrin kümmert er sich um anderes Zeug und hat beim Ausführen des zweiten Teils schon längst wieder vergessen, dass es je einen ersten gab.

Du kannst das mit zwei Scripten lösen. Eins erstellt das Formular, das andere nimmt Daten entgegen und schreibt sie weg. Soweit so einfach.

Nun gibt es jedoch einige Sachen zu beachten. Was ist, wenn der Benutzer ungültige Werte eingibt? Das musst du vor dem Eintrag prüfen. Du musst den Benutzer darauf hinweisen und ihm das Formular noch einmal zu Ändern anbieten (Stichwort: Affenformular). Wenn die Prüfung in Ordnung war, kannst du die Datenbank kontaktieren, das Statement zum Ändern der Daten erstellen und absenden. Beachte auch diesmal wieder einen Kontextwechsel: Eingabedaten werden in den Kontext "SQL-Statement" gebracht. mysql_real_escape_string() kümmert sich um die MySQL-gerechte Behandlung von Strings. (Und dann gibt es noch ein PHP-Feature, das mehr stört als nützt, namens Magic Quotes.)

Ein weiteres Problem stellt Nebenläufigkeit dar. Während Benutzer A grad dabei ist, sein Formular zu ändern, schickt Benuter B Änderungen am selben Datensatz ab. Nun ist A fertig und überschreibt die Änderungen von B, von denen er nichts mitbekommen hat. Wenn du der einzige Benutzer bist, kannst du dieses Problem vernachlässigen. Wenn nicht, solltest du dich nicht gleich an solch ein komplexes Thema wagen. :-)

echo "$verabschiedung $name";