Probleme beim Update -> Datensatz wird geleert

  • Themenstarter Themenstarter rohland70
  • Beginndatum Beginndatum
R

rohland70

Hallo Leute,

seit einiger Zeit schlage ich mich nun schon mit folgendem Problem herum:

Es wird ein Eintrag mittels INSERT in eine Datenbanktabelle geschrieben.

mysql_query("INSERT INTO tvn_termine (changed,date,header,details,location) VALUES (".mktime().",".$date.",'$header','$details','$location')");

Der gesamte String inkl. Variablen sieht so aus:
INSERT INTO tvn_termine (changed,date,header,details,location) VALUES (1113157751,1113084000,'hugo','balder','egon')


Wenn jetzt versucht wird, den Eintrag zu ändern, wird das Feld date auf -1 gesetzt und alle anderen Felder sind leer.

mysql_query("UPDATE tvn_termine SET changed=".mktime().",date=".$date.",header='$header',details='$details',location='$location' WHERE ID=$ID");

Der gesamte String inkl. Variablen sieht so aus:
UPDATE tvn_termine SET changed=1113158011,date=1113084000,header='hugo',details='balder',location='egon' WHERE ID=436

Komischerweise funktioniert das Update beim wiederholten Versuch korrekt. Auch weitere Updates funktionieren dann tadellos.

Wichtig: Eben hab' ich festgestellt, dass dies nur beim Firefox-Browser geschieht, nicht beim Internet Explorer. Könnte es sein, dass dies am FORM-Tag liegt?

-> <form name="edit" action="termine.php?action=save&ID='.$ID.'" method="post">

Danke für die Hilfe!

Roland
 
GET-Parameter als action einer POST-Form würde ich vermeiden!
Es kann sein, dass auch einige Browser damit Probleme haben, aber ich habe auch schon Webserver gesehen, die damit nicht klar kommen. Baue die Parameter lieber als hidden-inputs ein.

Gruß hpvw
 
Das war die Ursache!

Hallo hpvw,

nicht zu fassen aber mit der Änderung auf POST, wie Du sie vorgeschlagen hast, funktioniert die Sache problemlos.

Offensichtlich haben einige Browser (u.a. Firefox) tatsächlich damit Probleme. Ist das ein Bug oder liegt/lag der Fehler bei mir?

Vielen Dank für die Hilfe und einen schönen Tag noch...

Gruß

Roland
 
action muss eine URI sein. Da ein Query (die Parameter hinter dem Fragezeichen) Teil einer URI ist, sollte dies eigentlich zulässig sein, ebenso, wie mailto, ftp, gopher oder telnet. Allerdings wird der Sinn eines HTML-Formulars immer fragwürdiger und vor allem, was die Browser mit dieser Angabe machen unvorhersehbarer.

Ich hatte bisher noch nicht explizit mit dem Firefox Probleme, sondern mit dem Webserver Xitami, während Apache immer anstandslos solche Strukturen akzeptiert hat.
Du solltest jedoch darauf achten, dass Du auf die URI-Parameter mit dem superglobalen Array $_GET zugreifst und auf die Formulardaten mit $_POST. Vielleicht testest Du das nochmal, um Gewissheit zu haben.

Gruß hpvw
 
Zurück