dedlfix: affenformular mit datenbank eingabe und ausgabe

Beitrag lesen

echo $begrüßung;

» Ich seh da kein Affenformular. Dafür fehlen typische Bestandteile eines solchen.
Selbst wenn es sich um ein Formular handelt, das sich beim absenden wieder selbst aufruft?! dann versteh ich wohl auch den wiki-artikel falsch...

Sich selbst aufzurufen macht daraus noch kein Affenformular. Zum einen ist das Ziel, das Eingabeformular solange anzuzeigen, bis der Anwender keine Fehler mehr in seinen Eingaben hat und dann erst die Daten zu verarbeiten. Und zum anderen sollen die bisherigen Eingaben bei den Wiedervorlagen nicht verloren gehen. Du müsstest also die bisherigen Werte wieder dort eintragen und das natürlich kontextgerecht behandelt (htmlspecialchars()).

» Dieses Umkopieren [...]
Das hab ich nur gemacht, weils mir zu mühsahm war beim Eintrag in die Datenbank die immer ein Backslash vor die Anführungs- und Schlusszeichen zu setzen.

Der Backslash fällt sowieso weg, wenn du deine Daten auf sichere Weise in das SQL-Statement einbinden willst, denn dazu musst du deutlich mehr schreiben als den Backslash. mysql_real_escape_string() sorgt dafür, dass in den Daten enthaltene Zeichen gemäß den Regeln für Strings im (My)SQL-Statement entschärft werden (Maskierung).

$sql = sprintf('INSERT INTO tabelle (feld1, feld2) VALUES ("%s", "%s")',
  mysql_real_escape_string($_POST['feld1']),
  mysql_real_escape_string($_POST['feld2']));

» »» $sql = "INSERT INTO agenda(Datum, Zeit, Ort, Adresse) VALUES ($datum, $zeit, $ort, $adresse)";
» »» mysql_query($sql,$connectionid);
» Und wo ist deine Fehlerbehandlung an der Stelle? Ist das SQL-Statement, das du hier zusammenbaust korrekt?
Das frag ich ja euch.

Also ich hab den Code dafür nicht aus deinem Script entfernt. Es ist deine Aufgabe als Programmierer, die Rückgabewerte der Funktionen auf mögliche Fehlerhinweise zu untersuchen. Für mysql_connect() und mysql_select_db() hast du es ja auch gemacht, wenn auch verbesserungswürdig.

Wenn du dir mal die Variable $sql ausgibst, wirst du so etwas sehen

INSERT ... VALUES (2009-03-15, 11:18:03, ortsname, eine_anschrift)

2009-03-15 sind Zahlen mit einem Subtraktions-Operator dazwischen. MySQL fängt also zu rechnen an. Das ist zwar nicht das was du willst, aber aus Sicht von MySQL ein gültiger Ausdruck. 11:18:03 ist zunächst eine Zahl (11) gefolgt von einem Doppelpunkt. Doppelpunkte kommen aber in der Syntax von MySQL-Statements nicht vor und damit wird das Statement als fehlerhaft abgewiesen. Abgesehen davon sind ortsname und eine_anschrift vermutlich keine Feldbezeichner und reservierte Wörter oder Funktionsnamen schon gar nicht, was die nächsten Fehler wären. Du willst stattdessen einen String, also musst du diesen auch so notieren: in Anführungszeichen (Quotierung).

echo "$verabschiedung $name";