如何在 PERL-CGI 中读取多个复选框
How to read multiple check boxes in PERL-CGI
我有一个包含多个复选框(所有适用项)的表单,我正在尝试读取所有选定的值....用户单击提交它会重新加载页面并检查 "post" 和如果是一个新条目....但它只读取第一个选择的值,我不知道我做错了什么;/
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cars">Cars</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Trucks">Trucks</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Airplanes">Airplanes</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cell Phones">Cell Phones</label>
sub post
{
if($id1 == 'active')
my @sections = $POST->{sections}->[0];
}
您的代码中存在一些明显的问题。
- 当您尝试进行字符串比较时,您正在使用
==
。请改用 eq
。
- 您的
if
语法错误。在 Perl 中,您需要使用大括号 - if (...) { ... }
.
- 您明确要求复选框数组中的第一个元素。您需要
@{ $POST->{sections} }
才能获得所有值。
所以,总而言之,您的子例程可能应该如下所示:
sub post
{
if ($id1 eq 'active') {
my @sections = @{ $POST->{sections} };
# Do something else with @sections
}
}
此外,我想请您在 2019 年认真重新考虑使用 CGI。请阅读 CGI::Alternatives 并考虑使用更现代的技术。
我有一个包含多个复选框(所有适用项)的表单,我正在尝试读取所有选定的值....用户单击提交它会重新加载页面并检查 "post" 和如果是一个新条目....但它只读取第一个选择的值,我不知道我做错了什么;/
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cars">Cars</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Trucks">Trucks</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Airplanes">Airplanes</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cell Phones">Cell Phones</label>
sub post
{
if($id1 == 'active')
my @sections = $POST->{sections}->[0];
}
您的代码中存在一些明显的问题。
- 当您尝试进行字符串比较时,您正在使用
==
。请改用eq
。 - 您的
if
语法错误。在 Perl 中,您需要使用大括号 -if (...) { ... }
. - 您明确要求复选框数组中的第一个元素。您需要
@{ $POST->{sections} }
才能获得所有值。
所以,总而言之,您的子例程可能应该如下所示:
sub post
{
if ($id1 eq 'active') {
my @sections = @{ $POST->{sections} };
# Do something else with @sections
}
}
此外,我想请您在 2019 年认真重新考虑使用 CGI。请阅读 CGI::Alternatives 并考虑使用更现代的技术。