正在将复选框的值保存在数据库中。我有3个变量($user_id, $checkbox_id, $checked
),但只有第3个变量很重要。
$checked
是true还是false表示用户是否选中了该复选框。以下代码只是相关的内容:
$checked = $_POST['checked'];
$check_interests_query = "SELECT All interests from interests Table";
$run_query = mysqli_query($connect, $check_interests_query);
$status_1 = $checked;
if(mysqli_num_rows($run_query) == 0 && $checked == true){
$in = "first";
//do stuff
}
else if(mysqli_num_rows($run_query) != 0 && $checked == true){
$status_2 = $checked;
$in = "second";
//do stuff
}
//Other conditions
所以现在我选中并取消选中同一复选框,并得到以下结果。
选中复选框时:
$checked = true
$in = "second"
$status_1 = true
$status_2 = true
取消选中复选框时:
$checked = false
$in = "second"
$status_1 = false
$status_2 = false
因此$checked
在文档开始时为false,在if-condition之前为false,在输入条件后为false。尽管条件明确指示仅在$checked
为真时才播放,但它仍进入上述条件。
我想念什么?
编辑:var_dump($_POST)
给出以下内容
选中复选框时:
array(3) {
["checked_id"]=>
string(1) "3"
["checked"]=>
string(4) "true"
["user_id"]=>
string(1) "6"
}
取消选中时:
array(3) {
["checked_id"]=>
string(1) "3"
["checked"]=>
string(5) "false"
["user_id"]=>
string(1) "6"
}
答案 0 :(得分:2)
您获得的POST参数是字符串。
如果POST变量中的字符串为“ true”或“ false”,则应json_decode
将其转换为布尔值。
更改第一行:
$checked = json_decode($_POST['checked']);
或者,为了更加安全:
$checked = $_POST['checked'] == "true";
如果POST变量中包含字符串“ true”,则最后一个将$checked
设置为true。