Hallo!
Also, ich habe da ein Formular, welches aus einem Eingabefeld, einem Textfeld, 2 versteckten EIngabefeldern und sieben verschiedenen Absende-Knöpfen besteht. Wenn ich einen bestimmten davon drücke, nämlich den Aktualisierungsknopf, der nichts weiter tun soll als dem Benutzer zu bestätigen, dass seine Eingaben aktualisiert wurden verschwindet mitunter der Text aus dem Textfeld des Formulares. Das passiert aber nur, wenn der Text sehr lang ist.
Testhalber hab eich einfach mal einfach meinen Lebenslauf aus Word kopiert (mit Bearbeiten -> Alles markieren & Bearbeiten -> kopieren, so wie das Otto Normal-Benutzer halt auch machen würde) und in das Textfeld eingefügt.
Das Speichern dieser Daten in einer Datenbank verläuft ohne Probleme. Das Zwischenspeichern und das wieder in das Formular einfügen
durch die selbe Aktualisierungs-Methode die mir manchmal den langen Text verschluckt funktioniert auch, außer ich aktualisiere die Seite dann nochmal.
Ist der Query in diesem Fall zu lang?
Sollte ich da besser grundsätzlich immer eine Session benutzen und die Daten direkt aus dieser nehmen anstatt den Query zu bemühen?
Oder habe ich einfach nur wieder vergessen irgendwleche Sachen zu kodieren?
Hier mal der Code der Aktualisierungs-Methode (ist ein Teil eines CGI::Application - Paketes [von mir]):
sub aktualisiere {
my $self = shift;
# Query-Parameter wieder in die Liste der in das
# Template einzusetenden Werte aufnehmen
my %p = $self->query->Vars();
while( my ($key, $val) = each(%p) ){
$self->_set2substitute(ucfirst($key) => $val);
} # /while
# ToDo: CAP::Plugin::MessageStack benutzen
my $msg = 'Ihr Formular wurde aktualisiert (nicht gepeichert). [' . localtime() . ']';
$self->_set2substitute('Msg' => $msg);
return $self->forward('printForm');
} # /aktualisiere
printForm läd einfach das Template und fügt die Daten ein (HTML::Template, die_on_bad_params=>1).
Ideen?
Grüße, pktm