0

我有一个带有一系列复选框的表单,其名称为“name=category[]”。现在我需要计算用户选择了多少复选框。此外,我需要检查至少 1 个复选框被选中或最多 10 个复选框。

这是我目前正在尝试的方式......

if ( isset ( $_POST['category']) {

  if (( sizeof( $_POST['category']) == 10 || sizeof( $_POST['category']) <= 10 )) {

     // form processing....

  } else {

      echo 'Atleast 1, not more than 10 categories.';
  }

} else {

  echo 'Please select atleast one category.';

}

谁能告诉我还有另一种方法可以完成这项任务吗?这意味着,要得到这两个错误......

4

2 回答 2

1

在处理输入数组时,最好检查它是否是一个数组以及 isset:

if (isset($_POST['category']) && is_array($_POST['category'])) {

  $totalChecked = count($_POST['category']);

  if ($totalChecked >= 1 && $totalChecked <= 10) {

     // form processing....

  } else {
      echo 'Atleast 1, not more than 10 categories.';
  }

} else {
  echo 'Please select atleast one category.';
}
于 2013-01-11T11:17:44.907 回答
1

根据您的问题,您只想检查选定的复选框计数。

据我所知,复选框的值是“开”或“关”。如果您对名称“类别”进行计数,它将为您提供页面上显示的所有复选框计数,无论单击或未单击。

所以过滤掉并计算

将此函数放在 if 条件开始之前。格式化代码...


    function nonzero($var) {
        return $var !="off" ? "on" :'';
    }
    if ( isset ( $_POST['category']) { 
        $_POST['category'] = array_filter($_POST['category'], 'nonzero');
        if ( sizeof( $_POST['category'] ) >= 1 //check of at-least one is checked
             && sizeof( $_POST['category'] ) <= 10 ) { //check for at-most 10 is checked
            form processing();
        } else { 
            echo 'At-least 1, not more than 10 categories.'; 
        } 
    } else { 
        echo 'Please select at-least one category.'; 
    } 
于 2013-01-11T11:40:34.360 回答