Der-Dennis: Globale Variablen sind nicht vorhanden

Beitrag lesen

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