Schrift
[thread]658[/thread]

Formularwerte verschwinden: bei Aktuelisierung



<< >> 5 Einträge, 1 Seite
pktm
 2006-01-24 01:45
#6758 #6758
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
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]):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2006-01-24 02:13
#6759 #6759
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie versendest Du das?? Mit GET oder mit POST?? Bei GET gibt's ne Laengenbeschraenkung...

Gibst Du die eingegebenen Werte als Default-Values der HTML-Elemente aus (nach dem aktualiesieren)??

Wenn Du ein Formular abgesendet hast und dann auf "Refresh" klickst, dann sollte normalerweise eine Abfrage kommen, ob die Daten nochmal gesendet werden sollen. Klickst Du auf nein, sind die Daten ja logischerweise verschwunden...

Oder habe ich Dein Problem jetzt falsch verstanden?? Mir ist aus Deiner Beschreibung naemlich der Ablauf nicht ganz klar geworden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2006-01-24 13:58
#6760 #6760
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Das Formular verwendet "Post"-Daten.

a) Einmal wird es über einen Submit-Button abgeschickt, der die Daten aus dem Formular nimmt und in das value="" - Attribut der Input-Felder, bzw. den langen Text zwischen <textarea> und </textarea> einfügt. Die Methode funktioniert prima, wenn sie von anderen Methoden während eines Workflows aufgerufen wird.

b) Das andere Mal drücke ich den Knopf F5 auf meiner Tastatur. Da ich Opera verwende wird nicht nochmal gefragt, ob die Daten erneut gesendet werden sollen. Werde hier mal einen Dump machen. Da ich jedoch alles bis auf das Textfeld wieder in das Formular eingesetzt bekomme gehe ich schon davon aus, dass das Formular erneut gesendet wird.

Ich frage mich jetzt halt, woe die Daten bleiben, wenn ich
a) den Knopf zum Aktualisieren drücke der direkt die Werte aus dem Query nimmt und einfügt (bei den anderen Knöpfen erfolgreich) und
b) wenn ich F5 drücke.

Wichtig zu differenzieren ist, dass ich bei a) nur die Daten aus dem textarea-Feld nicht mehr sehe und bei b) alle Daten nicht mehr sehe.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2006-01-25 03:33
#6761 #6761
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hmm, ist schwer zu sagen, da wir es ja nicht testen können.

hast du mals versucht mit einem HTTP-Sniffer festzustellen, was wirklich über die leitung geht?
pq
 2006-01-25 13:17
#6762 #6762
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also an opera kanns schonmal nicht liegen. wenn ich hier im forum eine antwort
poste und auf vorschau klicke, kann ich das so oft tun, wie ich will, auch mit F5,
und meine gesposteten daten aus dem textfeld sind immer da.
hast du denn mal eine beispiel-url?
kannst du das script auf das wesentliche reduzieren und den fehler reproduzieren?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 5 Einträge, 1 Seite



View all threads created 2006-01-24 01:45.