我有像这样的复选框输入:
<input type="checkbox" name="service_options[]" value="it_maintenance" />
然后当我发布表单时,这段代码:
foreach($_POST["service_options"] as $so) {
if($so) {
echo 'yes';
} else {
echo 'no';
}
}
它在检查复选框时工作正常并且它回显“是”但如果未选中复选框,则“否”不会显示
答案 0 :(得分:1)
复选框仅在启用时发布。解决这个问题的通常方法是包含一个带有FALSE值的隐藏输入。表单将发布最后输入的值,因此请确保将隐藏位置放在复选框之前:
<input type="hidden" name="service_options[1]" value="no" />
<input type="checkbox name="service_options[1]" value="yes" />
这样每条记录将始终出现在帖子中。确保实际命名每个复选框/隐藏对,因为它们必须具有相同的名称才能生效。
答案 1 :(得分:0)
为此,不必破坏数组,只需检查数组:
$check = $_POST["service_options"];
if($check) {
echo 'yes';
} else {
echo 'no';
}
希望,它会对你有帮助。
答案 2 :(得分:0)
参考Prateek Verma上面的评论
它没有显示,因为当你没有
$_POST["service_options"]
中的值时,它将如何实现foreach() 条件?
要解决此问题,您需要先检查是否选中了复选框,然后检查是否已选中,然后启动循环。否则显示no
<?php
if (isset($_POST['submit'])) {
if (isset($_POST['service_options'])) {
foreach ($_POST["service_options"] as $so) {
}
if ($so) {
echo 'yes';
}
} else {
echo 'no';
}
}
?>
<form method="post">
<input type="checkbox" name="service_options[]" value="it_maintenance" />
<button type="submit" name="submit">ad</button>
</form>
更新:
从你的评论下面我的回答说明:
我基本上想知道用户是否取消选中该框 已经检查,如果他们已经检查了盒子,如果不是 已经检查过了
我已经做了另一种非常快速和简单的方法,当我选中/取消选中复选框时,我使用了ajax来做你想要做的事情我们将ajax发送到php脚本并且它会给我们带来结果,现在当用户检查我们会在取消选中时看到yes
,我们会收到no
作为回复。
html side。
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<form method="post">
<input type="checkbox" name="service_options[]" value="it_maintenance" id="sevices" />
</form>
<div id="response"></div>
<script type="text/javascript">
$('document').ready(function(){
$('#sevices').click(function(){
var formData = $('form').serialize();
$.ajax({
type : 'post',
data : formData,
url : 'checkbox.php',
dataType : 'json',
encode : true,
success : function(data){
if(data == "yes"){
//its check print back
$('#response').html(data);
}else{
//not checked print still
$('#response').html(data);
}
},
});
});
});
</script>
服务器端:checkbox.php
<?php
if (isset($_POST['service_options'])) {
foreach ($_POST["service_options"] as $so) {
}
if ($so) {
$message = 'yes';
}
} else {
$message = 'no';
}
echo json_encode($message);
?>
希望这有帮助
答案 3 :(得分:0)
我猜你有几个复选框,如下:
<input type="checkbox" name="service_options[]" value="it_maintenance" />
<input type="checkbox" name="service_options[]" value="foo" />
<input type="checkbox" name="service_options[]" value="bar" />
首先,您需要检查是否没有选中它们,然后您需要检查每个值:
<?php
$possible_values = array('it_maintenance', 'foo', 'bar');
if (!isset($_POST['service_options'])) {
echo 'None selected';
} else {
foreach ($possible_values as $val) {
if (in_array($val, $_POST['service_options'])) {
echo $val . ' selected';
} else {
echo $val . ' not selected';
}
}
};
?>
答案 4 :(得分:-2)
如果取消选中您的复选框,则POST上将不会显示该复选框
如果您仍想检查POST上是否存在复选框,您也可以使用:
foreach($_POST["service_options"] as $so) {
if(isset($so)) {
echo 'yes';
} else {
echo 'no';
}
}