Siechfred: Fomular auswertung mit perl (select multiple)

Beitrag lesen

weil gar nichts ausgegeben wird. Ich lese einen Formular mit anderen Felder, checkboxes usw, die richtig gelesen und ausgegeben werden, nur die select multiple wird nicht ausgegeben?? komisch.

Lass dir den Array @multiselect_name doch mal ausgeben (z.B. mit Data::Dumper).

Was mich wundert, ich habe der nur "use CGI;" ganz weg gelöscht und den rest des code unverändert gelassen und trotzdem funktioniert der Script, liest die Anderen Felder ganz richtig und mit select multiple passiert ja gar nicht. Müsste er in diesem Fall einen Fehlermeldung rausbringen?

Du hast die Zeile "use CGI" rausgeschmissen? Dann dürfte dein Script eigentlich nichts mehr tun.

Wie köönte eine andere Lösung Aussehen. Ich bekomme beim konventionellen parsing Methoden nur der esten selected value. Wie bekomme ich alle selected values?

Du kannst die Daten von Hand parsen:

my $data;  
my %form_data;  
my $method = $ENV{'REQUEST_METHOD'};  
if ($method eq "GET") {  
  $data = $ENV{'QUERY_STRING'};  
}  
elsif ($method eq "POST") {  
  read (STDIN, $data, $ENV{'CONTENT_LENGTH'});  
}  
else {  
  die "Invalid request method!";  
}  
my @paare = split(/&/, $data);  
foreach (@paare) {  
  $_ =~ tr/+/ /;  
  $_ =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;  
  ($schl, $wert) = split (/=/, $_);  
  if(defined $form_data{$schl}) {  
    $form_data{$schl} .= ";" . $wert";  
  }  
  else {  
    $form_data{$schl} = $wert;  
  }  
}

Der Zugriff erfolgt über $form_data{"Name_des_Formularfeldes"}. Mehrere Werte erkennst du daran, dass sich mehrere Werte, getrennt durch ein Semikolon, im jeweiligen String befinden. Ob das Semikolon dabei der geeignete Trenner ist, musst du selber entscheiden.

Siechfred