2016-11-23 2 views
1

Wie greife ich alle Optionen von einem SELECT-Tag ausgewählt zu verarbeiten, die dann in eine Form POST übergeben wird Das HTML-Formular-Setup ist wie folgt:Perl ReadParse SELECT HTML-Tag mit mehreren Optionen slected

<div class="header">   
<FORM ACTION=/cgi-local/process.pl METHOD=POST> 
<p> 
CMS: 
</p> 
<h6>Hold Down control(CTRL) key to select multiple CMSs</h6> 

<SELECT NAME = "cms" multiple> 

<option></option>> 
<option>#1 - 15 N 0.4 N/O ONTARIO AVE</option>> 
<option>#2 - 15 S 1.1 S/O 6TH</option>> 
<option>#3 - 215 N CENTRAL 215</option>> 
<option>#4 - 215 S 0.45 S/O IOWA</option>> 

</SELECT> 
</p> 
<INPUT TYPE=SUBMIT VALUE="Submit Form" align="center"> 

</FORM> 
</INPUT> 
</div> 

Das Perl-Abschnitt, in dem es die POST-Daten unter Verwendung von ReadParse Griffe:

use CGI qw(:cgi-lib :standard); 
&ReadParse(%in); 

$cms = $in{"cms"}; 

Anzeige zeigt den Inhalt von $cms nur die erste trotz Mehrfachauswahl ausgewählten Option. Wie greife ich auf die übergebenen Daten zu?

Antwort

2
use CGI qw(:cgi-lib :standard); 
&ReadParse(%in); 

Aaaah, die neunziger Jahre ...

Wie kann ich alle Optionen von einem SELECT-Tag ausgewählt zugreifen?

Verwendung multi_param:

my @v = multi_param('cms'); 

Dabei werden Sie cgi-lib.pl Kompatibilität mit Perl 4 ist sein Aufgeben. Verwenden Sie also nicht &ReadParse(%in);, sondern greifen Sie auf Werte von CGI-Parametern zu, indem Sie param verwenden und den Hash-Wert %in entfernen.

Nach perldoc perlhist, letzte Version von Perl 4 wurde 1993 veröffentlicht:

Larry 4.036 1993-Feb-05 Very stable.

Sie können mit einer älteren Version von CGI.pm geklebt werden. Es wurde im Jahr 2014 hinzugefügt. Wenn dies der Fall ist, können Sie my @v = param('cms'); verwenden, aber lesen Sie die Dokumentation.

Verwandte Themen