Thread texfield bei Aktion füllen...: Ist das überhaupt möglich? (41 answers)
Opened by zipster at 2006-01-05 19:08

bloonix
 2006-01-07 18:14
#6462 #6462
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=zipster,07.01.2006, 15:45]wie ist den das umgesetzt? Mit einem
Javascript?[/quote]

Ja, das ist Javascript. Es bewirkt, dass beim Ändern eines Feldes ein Request
ausgelöst wird und das Formular wird zum Webserver gesendet. Der
Nachteil ist bekannt. Wenn jemand Javascript im Browser deaktiviert hat,
dann funktioniert das Ganze nicht. Für diesen Fall solltest du trotzallem
einen Button bereitstellen oder wenn es möglich ist, herausfinden, ob im
Browser des Gastes/Kunden Javascript aktiviert ist.

[quote=zipster,07.01.2006, 15:45]Oder ist das pur CGI? denn das
"onchange=" kenn ich nur in verbindung mit CGI[/quote]

Bitte verwechsel das nicht. Perl, CG[b]I[/b], PHP... das alles hat überhaupt
nichts mit Javascript zu tun. Mit Perl, PHP etc. generierst du dynamisch auf
dem Webserver die Daten, die anschließend an den Browser des Clients
gesendet werden. Mit Javascript hast du die Möglichkeit, die Seite im
Browser zu manipulieren, ohne einen neuen Request zu starten und diese
"Manipulationen" laufen nicht auf dem Webserver, sondern auf dem Client.

[quote=zipster,07.01.2006, 15:45]wie ist den das umgesetzt?[/quote]

Eigentlich ist da nicht viel dran. Ich lese die Umgebung aus, die meinem
Perlskript mit dem Request übergeben wird und werte sie dann aus.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
my (%argv,@param);

if ($ENV{'REQUEST_METHOD'} eq 'GET') {
  @param = split /&/, $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
  read(STDIN, my $env, $ENV{'CONTENT_LENGTH'});
  @param = split /&/, $env;
}

foreach (@param) {
  my ($name,$value) = split /=/, $_;
  $name  =~ tr/+/ /;
  $name  =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

  # untaint name and value

  next unless $name =~ /^(\w+)$/;
  $name = $1;

  next unless $value =~ /^([a-zA-Z_0-9 ]+)$/;
  $argv{$name} = $1;
}

# hier habe ich die Betriebssysteme definiert.

my %os = (
  Linux => [ 'SuSE', 'Red Hat', 'Debian', 'Mandrake' ],
  Windows => [ 'WIN95', 'WIN98', 'WINME', 'WINXP' ]
);


Wenn also in $argv{OS} "Linux" oder "Windows" abgelegt ist, nur dann
sende ich an den Browser die nächste Auswahlliste.

Code: (dl )
1
2
3
if ($os{$argv{OS}}) { # der Key muss da sein
  # dann sende die nächste Liste (<select><option></option></select>) ...
}


Ok?

[quote=zipster,07.01.2006, 15:45]
(sorry wenn das ne dumme frage ist)
[/quote]

Wer nicht fragt bleibt dumm. Frag also solange, bis dir der Mund
abfällt und die Finger abfaulen :-)\n\n

<!--EDIT|opi|1136655768-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread texfield bei Aktion füllen...: Ist das überhaupt möglich?