我有一个包含一系列复选框的表单,其名称与'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.';
}
任何人都可以告诉我还有另一种方法来完成这项任务吗?这意味着,要得到这两个错误...
答案 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.';
}