使用php验证复选框

时间:2013-01-11 11:12:14

标签: php

我有一个包含一系列复选框的表单,其名称与'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.';

}

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

2 个答案:

答案 0 :(得分: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.';
}

答案 1 :(得分:1)

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

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

将其过滤掉并计算

如果条件开始,请先放置此功能。 格式化代码......


    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.'; 
    }