Datenbankeinträge ändern

tluebke

Mitglied
Ich habe ein Problem mit meiner Datenbank. Dabei geht es um einen Laborbelegungsplan, der im Browser über Inputfelder geändert werden kann. Es gibt 20 Plätze, die monatlich vergeben werden können (Tabelle 20x12).

Die Anzeige der Einträge verläuft problemlos, wenn ich jedoch Änderungen vornehmen will, sendet er die geänderten Daten zwar und gibt sie in meiner Schleife auch richtig aus, jedoch klappt die Update-Funktion bei mir nicht. Ich habe schon alle möglichen Anführungszeicehn-Möglichkeiten ausprobiert, aber es scheint wohl eher ein generelles Problem vorzuliegen. Könnt ihr mir helfen?

Datenbank-Layout:
Code:
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `year` int(11) NOT NULL,
  `placeID` varchar(3) NOT NULL,
  `1` varchar(30) DEFAULT NULL,
  `2` varchar(30) DEFAULT NULL,
  `3` varchar(30) DEFAULT NULL,
  `4` varchar(30) DEFAULT NULL,
  `5` varchar(30) DEFAULT NULL,
  `6` varchar(30) DEFAULT NULL,
  `7` varchar(30) DEFAULT NULL,
  `8` varchar(30) DEFAULT NULL,
  `9` varchar(30) DEFAULT NULL,
  `10` varchar(30) DEFAULT NULL,
  `11` varchar(30) DEFAULT NULL,
  `12` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8
year = 2011, 2012 etc...
placeID kann von A1-A7, B1-B9, C1-C8 und D1-D3 gehen (Das sind die Laborplatzbezeichnungen).
Die Tabellenspalten 1-12 stehen für die Monate

PHP-Code für Update-Funktion der Datenbank:
PHP:
$save = mysql_query("UPDATE emotherearth,labbelegung SET $Month = '$data' WHERE placeID = '$ActPlaceID' AND year = '$year_active'");
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP/MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Aber grob geschätzt, hast du das Problem, dass du die Monatsspalte als Zahl ansteuerst. (Eine reine Zahl als Spaltenname ist Subotimal).
Dein SQl sieht dann ungefähr so aus
SQL:
... SET 1 = 'data1' ...
-- müsste aber so aussehen, damit 1 nicht eine Zahl sondern ein Spaltenname ist
... SET `1` = 'data1' ...

Dasselbe mit dem Fald year, da YEAR auch ein SQL-Befehl ist und du ganz klar definieren willst, dass du den Spaltenname und nicht den SQL-Befehl meinst

Ergo:
PHP:
$sql = "
UPDATE 
    emotherearth,
    labbelegung
SET 
    `{$Month}` = '{$data}'
WHERE
    placeID = '{$ActPlaceID}' 
    AND `year` = '{$year_active}';";
 
Zuletzt bearbeitet von einem Moderator:
Zurück