【问题标题】:How to read multiple check boxes in PERL-CGI如何在 PERL-CGI 中读取多个复选框
【发布时间】:2019-07-12 03:12:48
【问题描述】:

我有一个包含多个复选框的表单(所有都适用),我正在尝试读取所有选择的值....用户单击提交它会重新加载页面并检查“发布”,如果是新的entry....但它只读取选择的第一个值,我不知道我做错了什么;/

<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];

}

【问题讨论】:

  • 什么是$POST?这不是 CGI.pm 的一部分。您的代码有语法错误。请edit您的问题并显示您的真实代码

标签: forms perl cgi


【解决方案1】:

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

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

所以,总而言之,您的子程序应该如下所示:

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

另外,我希望您在 2019 年认真重新考虑使用 CGI。请阅读 CGI::Alternatives 并考虑使用更现代的技术。

【讨论】:

  • 是的,在发布问题后,我注意到为什么我只是获得数组的第一个值的错误......非常感谢您的帮助和提示
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多