如何在PERL-CGI中读取多个复选框

时间:2019-02-18 17:16:08

标签: forms 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];

}

1 个答案:

答案 0 :(得分:2)

您的代码中存在一些明显的问题。

  1. 当您尝试进行字符串比较时,您正在使用==。请改用eq
  2. 您的if语法错误。在Perl中,您需要使用大括号-if (...) { ... }
  3. 您明确要求复选框数组中的第一个元素。您需要@{ $POST->{sections} }才能获取所有值。

因此,总的来说,您的子例程应该看起来像这样:

sub post
{ 
  if ($id1 eq 'active') {
    my @sections = @{ $POST->{sections} };
    # Do something else with @sections
  }
}

此外,我想请您在2019年认真考虑使用CGI。请阅读CGI::Alternatives并考虑使用更多现代技术。