确保选中至少一个复选框php

时间:2014-06-12 14:55:39

标签: php checkbox

我有一些带有几个复选框的邮件表格。在开始邮寄之前,至少需要选择一个方框。

我的HTML:

<input type='checkbox' id='part1' name='box1' value='box1' checked>
<label for="part1">Voor Leden agenda</label>
<br/>
<input type='checkbox' id='part2' name='box2' value='box2' checked>
<label for="part2">Voor Leiding agenda</label>
<br/>
<input type='checkbox' id='part3' name='box3' value='box3' checked>
<label for="part3">Verhuur agenda</label>
<br/>
<button type='submit' name='send'/>send</button>

我的PHP:

if (isset($_POST['box1'])) {
    $box1 = 'yes';
} else {
    $box1 = 'No';
}
if (isset($_POST['box2'])) {
    $box2 = 'yes';
} else {
    $box2 = 'No';
}
if (isset($_POST['box3'])) {
    $box3 = 'yes';
} else {
    $box3 = 'No';
}

如果没有选中复选框,我想有一个脚本给出如下信息:

if()
{
    echo "<p class='redfont'>no checkboxes are selected</p>";
    echo "<p><a href='javascript:history.back();'>Click to go back</a></p>";
}

编辑:如果所有框都未选中,我该如何用php提供此消息

5 个答案:

答案 0 :(得分:3)

if(!isset($_POST['box1']) && !isset($_POST['box2']) && !isset($_POST['box3']))
{
      // none is set
}

您甚至可以应用De Morgan定律并编写此等效表达式

if(isset($_POST['box1']) || isset($_POST['box2']) || isset($_POST['box3']))
{
      // at least one of them is set
}

您甚至可以将这3个参数发送到1 isset个电话,但之后会检查是否所有参数都已设置,这不是您的要求。

答案 1 :(得分:1)

试试这个:

if(isset($_POST["box1"]) || isset($_POST["box2"]) || isset($_POST["box3"])) {
    if(isset($_POST['box1'])) {
        $box1 = 'yes';
    } else {
        $box1 = 'No';
    }
    if(isset($_POST['box2'])) {
        $box2 = 'yes';
    } else {
        $box2 = 'No';
    }
    if(isset($_POST['box3'])) {
        $box3 = 'yes';
    } else {
        $box3 = 'No';
    }
} else {
    echo "<p class='redfont'>no checkboxes are selected</p>";
    echo "<p><a href='javascript:history.back();'>Click to go back</a></p>";
}

答案 2 :(得分:0)

我认为这个更具可读性:

$boxes = ['box1', 'box2', 'box3'];
$checked = [];

foreach($boxes as $box){
    if(isset($_POST[$box])){
        $checked[] = $box;
    }
}

if(count($checked) == 0){
    // no boxes checked
    echo "<p class='redfont'>no checkboxes are selected</p>";
    echo "<p><a href='javascript:history.back();'>Click to go back</a></p>";
}else{
    // at least one box is checked, you can do another foreach statement
        with the $checked variable to do stuff with the checked ones
}

答案 3 :(得分:0)

要为任意数量的复选框(网站必须展开)执行此操作,我假设所有复选框都是表格框** ** **:

if( strpos( implode(',' , array_keys($test)) , 'box' ) !== FALSE ) 

答案 4 :(得分:0)

我在JQuery中使用这个函数:

jQuery.validation = function(){

var verif = 0;
$(':checkbox[id=list_exp]').each(function() { 
    if(this.checked == true){
     verif++
    }
});
if(verif == 0){
    alert("no checkboxes are selected");
    return false;
}

}