Perl & Multiselektionslisten
Marc
- perl
0 Stefan Muenz0 Marc0 Frank Schönmann
Hallo!
Ich habe eine Multiselektionsliste:
<select name="fausw" multiple size=2>
<option value="001" selected> Eins
<option value="002" > Zwei
<option value="003" > Drei
</select>
Wie kann ich die Übergabewerte "...fausw=001&fausw=002&fausw=003"
(wenn halt alle drei markiert wurden!) mit $in in ein Perl-Array einlesen?
Marc
Hallo Marc
Wie kann ich die Übergabewerte "...fausw=001&fausw=002&fausw=003"
(wenn halt alle drei markiert wurden!) mit $in in ein Perl-Array einlesen?
Wenn sie tatsaechlich so vorliegen, kannst du sie mit der split-Funktion aufgrund der Trennzeichen auseinanderdividierten (siehe <../../tgck.htm#a2>).
Bei einem Test habe ich allerdings in Perl nach Einlesen von Formulardaten mit Mehrfachauswahl in den ueblichen FORM-Hash nur den untersten der ausgewaehlten Listeneintraege im value gehabt. Ich waere auch dankbar, wenn jemand mal das genaue Handling zur Auswertung von <select multiple> in Perl genauer beschreiben koennte.
viele Gruesse
Stefan Muenz
Hallo Stefan,
Wie kann ich die Übergabewerte "...fausw=001&fausw=002&fausw=003"
(wenn halt alle drei markiert wurden!) mit $in in ein Perl-Array einlesen?Wenn sie tatsaechlich so vorliegen, kannst du sie mit der split-Funktion aufgrund der
Die liegen natürlich nicht so vor! - Tschuldigung, mein Fehler!
Der obige "String" sollte ein Auszug aus der Locationbar des Browsers sein!
" http://www.xyz.de/cgi-bin/script.pl?name=marc&fausw=001&fausw=002&fausw=003 "
Trennzeichen auseinanderdividierten (siehe <../../tgck.htm#a2>).
viele Gruesse
Stefan Muenz
MfG Marc
hi!
Wie kann ich die Übergabewerte "...fausw=001&fausw=002&fausw=003"
(wenn halt alle drei markiert wurden!) mit $in in ein Perl-Array einlesen?
Wenn sie tatsaechlich so vorliegen, kannst du sie mit der split-Funktion aufgrund der
Trennzeichen auseinanderdividierten (siehe <../../tgck.htm#a2>).Bei einem Test habe ich allerdings in Perl nach Einlesen von Formulardaten mit
Mehrfachauswahl in den ueblichen FORM-Hash nur den untersten der ausgewaehlten
Listeneintraege im value gehabt. Ich waere auch dankbar, wenn jemand mal das genaue
Handling zur Auswertung von <select multiple> in Perl genauer beschreiben koennte.
Man könnte das folgenermaßen lösen:
=== cut ===
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$EnvDaten = $ENV{'QUERY_STRING'};
} else {
read STDIN, $EnvDaten, $ENV{'CONTENT_LENGTH'};
}
$Trennzeichen = ":";
for (split /&/, $EnvDaten)
{
my ($key, $value) = split /=/;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
$value =~ s/</</g;
$value =~ s/>/>/g;
($p{$key}) && ($p{$key} .= "$Trennzeichen$value") ($p{$key} = $value);
}
=== cut ===
Das Trennzeichen sollte man natürlich so wählen, dass es sonst in keinem der Werte vorkommt. In ein Array splitten lässt sich der Skalar, der alle Werte der Liste enthält, mit dem Befehl split:
@werte = split /$Trennzeichen/, $p{'name_der_auswahlliste'};
bye, Frank!