Yadgar: Globale Variablen sind nicht vorhanden

Beitrag lesen

Hallo Yadgar,

spontan fällt mir hier auf, dass Schweifung_Horizontal, Schweifung_Vertikal und Radial in $_POST fehlen.

Die fehlen (bzw. sollten NULL enthalten), weil zu den entsprechenden Feldern (in der Eingabemaske alles Radiobuttons ohne Default-Werte) nichts eingegeben wurde - ich gab die Daten eines unteren Manuals ein, da sind diese drei Pedal-Eigenschaften gegenstandslos.

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.

Habe ich gemacht, ich bekomme folgende Warnmeldungen:

Direkt nach dem Aufruf von klaviaturen.php erst einmal

**Notice: Undefined index: section in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 269 **

Das ist logisch, weil $_GET['section'] erst einen definierten Wert bekommt, wenn entweder "Neue Datensätze eingeben" (dann 1) oder "Vorhandene Datensätze bearbeiten" (dann 2) angeklickt wurde.

Wenn ich jetzt "Neue Datensätze eingeben" anklicke, kommen noch vor der Eingabemaske folgende fünf Warnmeldungen:

**Notice: Undefined index: mode in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 29

Notice: Undefined index: mode in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 40

Notice: Undefined index: id in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 40

Notice: Undefined index: first in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 40

Notice: Undefined index: sort in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 40 **

Auch keine Überraschung, da mode, id, first und sort erst nach dem Anklicken von "Vorhandene Datensätze bearbeiten" ihre Werte bekommen, in der Verzweigung für $_GET['section'] = 1 hingegen gar nicht vorkommen.

Jetzt meine Testeingabe:

Position: Unteres Manual ($_POST['Position'] = 1) Tiefste Taste: F ($_POST['Tiefste_Taste'] = 29) Höchste Taste: c''' ($_POST['Hoechste_Taste'] = "c'''" - hier hatte ich noch nicht auf Integers als value-Werte umgestellt, kommt aber bei nächster Gelegenheit!) Pedaltyp, Schweifung horizontal, Schweifung vertikal, Radial bleiben leer, die entsprechenden $_POST-Elemente müssten also NULL enhalten - aber wieso werden sie dann beim var_dump nicht als NULL angezeigt?) Tastentyp: Vorspringend ($_POST['Tastentyp'] = "Vorspringend", siehe "Hoechste Taste") Gewichtet: nein ($_POST['Gewichtet'] = "nein") Aftertouch: nein ($_POST['Aftertouch'] = "nein")

In $_POST steht folgendes:

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" }

Dann folgende Warnmeldungen:

**Notice: Undefined index: Schweifung_Horizontal in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 227

Notice: Undefined index: Schweifung_Vertikal in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 227

Notice: Undefined index: Radial in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 227

Notice: Undefined index: Schweifung_Horizontal in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 246

Notice: Undefined index: Schweifung_Vertikal in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 249

Notice: Undefined index: Radial in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 252**

Aha, die drei Elemente existieren überhaupt nicht, folglich kann da auch nicht NULL stehen - also werde ich auf !isset() prüfen müssen!

Außerdem: Die MySQL-Erweiterung von PHP solltest Du nicht mehr verwenden, die ist veraltet. Verwende besser Mysqli oder PDO.

Mag ja sein, aber mein Miet-Server arbeitet noch mit PHP 4!

Wird denn überhaupt was in die Datenbank eingetragen?

"Irgendwas" wird durchaus eingetragen, bei meinen Eingabebeispiel der Reihe nach:

ID: 30 (soviele vergebliche Versuche habe ich bereits hinter mir...) Position: 0 (hä?) Tiefste_Taste: 0 (hää??) Hoechste_Taste 0 (was soll denn das?!?) Pedaltyp: NULL (Defaultwert) Schweifung_horizontal: NULL (Defaultwert) Schweifung_vertikal: NULL (Defaultwert) Radial: NULL (Defaultwert) Tastentyp: (leer), ich vermute "" Gewichtet: 0 (Typ ist bool, also passt das zumindest zu "nein") Aftertouch: 0 (dito)

Also, ich weiß nicht, was ich davon halten soll... komplett gaga wird es aber jetzt mit den folgenden Warnmeldungen:

**Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 284

Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 284

Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 284

Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 284

Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 284

Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 284

Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 304

Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 304

Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 308

Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 308

Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 312

Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/khyberspace/greenbook_admin/klaviaturen.php on line 312

**

Den einzigen Reim, den ich mir darauf machen kann ist, dass die Serveradministration zwischenzeitlich die Verfahrensweise bei mysql_real_escape_string() umgestellt hat, Magic Quotes aktiviert hat oder dergleichen... dann müssten ja meine bislang bereits erfolgreich programmierten Eingabeseiten dieselben Meldungen werfen!

Genau das passiert aber nicht - wenn ich mit verkaufoderangebot.php einen neuen Datensatz eingebe, ist alles einwandfrei!

Was machen die Funktionen dbcall() und dberror()?

dbcall():

  function dbcall()
  {
    $db = mysql_connect("www.bergisch-afghanistan.de", "d0069173", "Passwort_verrate_ich_euch_natuerlich_nicht");
    dberror();
    $db = mysql_select_db("d0069173");
    dberror();
  }

dberror():

  function dberror()
  {
    if (mysql_errno())
    {
      switch(mysql_errno())
      {
	case 1062:
	  die ("Ein Eintrag mit diesen Daten existiert bereits! Bitte korrigieren Sie Ihre Eingabe!<br>");
	break;
	default:
	  die (mysql_errno().": ".mysql_error()."<br>");
      }
    }
  }

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.

Werde ich ändern!

Bis bald im Khyberspace!

Yadgar