Hallo,
hier mein problem. wie der titel schon sagt hab ich versucht einen mehrfachauswahl select feld in ein formular zu parsen und die values in ein datei rauszuschreiben. Leider bekomme ich nur den ersten selected value zurück und nicht alle values was ich selected habe.
hier der code:
################# ANFANG #################################
sub parseForm{
# GET method
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
#POST method
} elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read (STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
Error message
} else {
print "Content-type: text/html\n\n";
print "<P>Use Post or Get";
}
foreach $pair (@pairs) {
($key, $value) = split (/=/, $pair);
# Convert plusses to spaces
$key =~ tr/+/ /;
# Convert Hex values to ASCII
$key =~ 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;
# Eliminate comments? What the heck is she doing here???
$value =~s/<!--(.|\n)*-->//g;
#If we already have a key with this name, allow for multiple values!!!
if ($formdata{$key}) {
$formdata{$key} .= ",". $value;
} else {
$formdata{$key} = $value;
}
}
return %formdata;
}
$file = /cgi-bin/logfiles/file.txt";
my %formdata = &parseForm();
open (LOGF, ">>$file.txt") || print "Could not write $file.txt\n";
print LOGF "Feldname Interessengebiet contained value: $formdata{'Interesse'}\n";
close LOGF;
################## ENDE #####################
Die HTML Datei mit dem Formular hat die form:
<td align="left" width="186"><select name="Interesse" size="5" multiple>
<option value="3191647204">Punk1</option>
<option value="3191647604">Punk2</option>
<option value="3191643904">Punk3</option>
<option value="3191646504">Punk4</option>
<option value="3191644604">Punk5</option>
<option value="3191644804">Punk6</option>
</select></td>
Wenn ich Punkt1 Punkt2 Punk3 markiere dann bekomme ich immer nur den ersten Wert raus:
Bsp: Feldname Interessengebiet contained value 3191647204
Anstatt von,
Bsp:Feldname Interessengebiet contained value 3191647204,3191647604,3191643904
was ich erwarten würde.
Auch mit der CGI.pm modul habe ich es ausprobiert und wieder bekomme ich nur den ersten value.
hier der CODE:
my $query = CGI->new();
my @values = $query->param('Interesse');
hab nach vielen versuchen aufgegeben und ich weiss nicht mehr was ich noch machen muss damit das funktioniert.
Bitte um eure Hilfe / Erfahrung.
danke
Gruss, ISSY