这是HTML / JavaScript:
<form method = "post" style="display: inline;" name="thisform<?php echo $employee->id; ?>">
<input type="hidden" name="user" value="<?php echo $employee->id; ?>" />
<input type="hidden" name="auto" value="<?php echo $employee->stay_live; ?>" />
<h3><input type="checkbox" name="stay_live" onclick="document.forms.thisform<?php echo $employee->id; ?>.submit();" <?php if ($employee->stay_live == '1') { echo "checked"; } ?> title="Click to Stay Live Every Day" /> <?php echo $employee->name; ?>
</form>
以下是PHP
:
<?php
if(isset($_POST['stay_live'])) {
$user=$_POST['user'];
$auto=$_POST['auto'];
if ($auto == 1) {
$sql = "UPDATE users SET stay_live = 0 WHERE id = '{$user}';";
}
if ($auto != 1) {
$sql = "UPDATE users SET stay_live = 1 WHERE id = '{$user}';";
}
mysqli_query($dbconnection, $sql);
}
?>
如果您在表单中看到onclick
代码,它将自动提交表单并执行PHP POST
。但是,onclick
仅在未选中checkbox
时才有效。如果选中它,屏幕会刷新,就像它做了一样,但POST从未提交过。
总结一下;当未检查框并且需要设置时,一切都按预期工作。但是对于UNSET来说,从不调用服务器功能。谁能明白为什么?
注意:这是测试代码,所以请不要对sql注入发表评论
答案 0 :(得分:1)
取消选中复选框值时,不会发送复选框值,因此未设置$_POST["stay_live"]
。
<?php
if (isset($_POST["user"])) // type="hidden" will be sent regardless of checkbox
{
if (isset($_POST["stay_alive"])) echo "Checkbox checked";
else echo "Checkbox not checked";
}
?>
答案 1 :(得分:1)
使用Jquery我会执行以下操作:您需要创建一个包含您要执行的函数的文件。该文件将通过POST或GET
接收对于你的onclick属性,只需为你的动作变量添加一个if,if(元素选中)action = unchecked --- else action = check
- Jquery函数
function cBoxSubmit($employId, $action){ // call it in your onclick attribute.
$.post("submitFunction.php",{action: $action, employId: $employId, ...},function(data){ // Parameters: URL file, variables which will receive, call back function
if(data){
// On Success or in your case if checked
// add some code if needed
}
else{
// If unchecked
// add some code if needed
}
}
}
注意:echo ==在你的php文件中返回...这就是你在Jquery函数中将数据返回给回调函数的方法