Hallo Yadgar,
Das steht nach dem Abschicken der Daten in $_POST:
array(7) { ["Position"]=> string(1) "1" ["Tiefste_Taste"]=> string(2) "29" ["Hoechste_Taste"]=> string(4) "c'''" ["Pedaltyp"]=> string(0) "" ["Tastentyp"]=> string(12) "Vorspringend" ["Gewichtet"]=> string(4) "nein" ["Aftertouch"]=> string(4) "nein" }
spontan fällt mir hier auf, dass Schweifung_Horizontal
, Schweifung_Vertikal
und Radial
in $_POST
fehlen. Das sollte Dir im Folgenden mindestens eine Notice werfen.
Lass Dir doch mal die PHP- und MySQL-Fehlermeldungen ausgeben. Vielleicht kommst Du so der Ursache schon etwas näher.
Außerdem: Die MySQL-Erweiterung von PHP solltest Du nicht mehr verwenden, die ist veraltet. Verwende besser Mysqli oder PDO.
So sieht der Aufbau des Querystrings und das anschließend Absenden zur Datenbank aus:
$query = 'INSERT INTO klaviaturen (Position, Tiefste_Taste, Hoechste_Taste, Pedaltyp, SchweifungHorizontal, SchweifungVertikal, Radial, Tastentyp, Gewichtet, Aftertouch) VALUES ("'.mysql_real_escape_string($_POST['Position']).'","'.mysql_real_escape_string($_POST['Tiefste_Taste']).'","'.mysql_real_escape_string($_POST['Hoechste_Taste']).'",'; if ($_POST['Pedaltyp'] == NULL) $query = $query.'NULL,'; else $query = $query.'"'.mysql_real_escape_string($_POST['Pedaltyp']).'",'; if ($_POST['Schweifung_Horizontal'] == NULL) $query = $query.'NULL,'; else $query = $query.'"'.mysql_real_escape_string($_POST['Schweifung_Horizontal']).'",'; if ($_POST['Schweifung_Vertikal'] == NULL) $query = $query.'NULL,'; else $query = $query.'"'.mysql_real_escape_string($_POST['Schweifung_Vertikal']).'",'; if ($_POST['Radial'] == NULL) $query = $query.'NULL,'; else $query = $query.'"'.mysql_real_escape_string($_POST['Radial']).'",'; if ($_POST['Tastentyp'] == NULL) $query = $query.'NULL,'; else $query = $query.'"'.mysql_real_escape_string($_POST['Tastentyp']).'",'; if ($_POST['Gewichtet'] == NULL) $query = $query.'NULL,'; else $query = $query.'"'.mysql_real_escape_string($_POST['Gewichtet']).'",'; if ($_POST['Aftertouch'] == NULL) $query = $query.'NULL)'; else $query = $query.'"'.mysql_real_escape_string($_POST['Aftertouch']).'");';
Es sollte also in der ersten Spalte der Datenbank (Position) 1 stehen und in der zweiten (Tiefste_Taste) 29... aber was steht tatsächlich drin? 0 und 0!
Wird denn überhaupt was in die Datenbank eingetragen? Oder ist zwischendurch ein Fehler aufgetreten? Was mir sonst noch auffällt: Du beendest $query mit einem Semikolon, in der mysql_query
-Doku wird darauf hingewiesen, dass man das nicht tun sollte. Weiß aber nicht, ob Dich das weiterbringt.
Außerdem könntest Du die $_POST
-Variablen wohl besser mit isset
oder empty
statt gegen null
überprüfen.
dbcall(); dberror(); $result = mysql_query($query); dberror(); echo "<p>Datensatz wurde in die Datenbank eingetragen!</p>";
Was machen die Funktionen dbcall()
und dberror()
? Außerdem ist Dein echo
relativ sinnlos, weil Du ja überhaupt nicht überprüfst, ob der Datensatz tatsächlich eingetragen wurde. Du behauptest das einfach, obwohl Du wohl eigentlich $result
auswerten möchtest.
Gruß Dennis