我必须使用复选框作为首选项,因此我将其保存在mysql数据库中以使其始终可用。当我选择复选框时,标签将更改为“已启用”,反之亦然。保存(提交)时,页面将发送一条指示复选框状态的提示消息,并将新值保存在数据库中0 =禁用1 =启用并“重新加载”同一页面并读取新值。现在,我有一个问题,那就是脚本需要干预才能从数据库读取值。只有当我第二次重新加载页面时,我才能获得正确的值。我插入了页面刷新,但没有解决问题。
-js-
<script>
function checked() {
if (document.getElementById("check1").checked){
$(check1).siblings('label').html('Abled');
alert("Abled Notify");
$.get("birthdaysend.php");
} else {
$(check1).siblings('label').html('Disabled');
alert("Disabled Notify");
}
}
// function change label checked
$('#check1').click(function() {
if ($(this).is(':checked')) {
$(this).siblings('label').html('Abled');
} else {
$(this).siblings('label').html('Disabled');
}
});
function urlCheck() {
if(window.location.href=="preference.php"){
//load page = read satus
checked();
}
}
urlCheck()
</script>
-插入数据库-
$dbox = "SELECT value FROM box WHERE id = '1'";
$dbox= $db->ExecuteScalar($dbox);
print_r($dbox);//temp
if (isset($_POST['check1']) && $_POST['check1'] == '1') {
Execute("UPDATE box SET value='1' WHERE id = '1'");
header("Refresh:0");
}else{
Execute("UPDATE box SET value='0' WHERE id = '1'");
//header("Refresh:0");
}
-HTML-
<form name="preference" action="preference.php" method="POST">
<div class="col-sm-4"><label class="container" for="check1">Tag 1</label><input type="checkbox" class="checkmark" name="check1" id="check1" value="1" <?php echo ($dbox == 1 ? 'checked' : '');?>></div>
<button style="float:left; margin-left: 0px;" type="submit" class="btn btn-primary"><i class="fa fa-floppy-o"></i> Save </button>
</form>
答案 0 :(得分:1)
首先更改此设置,先创建更新代码,然后选择
if (isset($_POST['check1']) && $_POST['check1'] == '1') {
Execute("UPDATE box SET value='1' WHERE id = '1'");
}else{
Execute("UPDATE box SET value='0' WHERE id = '1'");
}
$dbox = "SELECT value FROM box WHERE id = '1'";
$dbox= $db->ExecuteScalar($dbox);
print_r($dbox);//temp
从javascript中删除Urlcheck和选中的函数
在标签中添加此代码,而不是标签1
echo ($dbox == 1 ? 'Abled' : 'Disabled');
答案 1 :(得分:0)
一种更好的方法是使用Ajax,其中将值插入数据库的代码是与带有复选框的页面不同的页面。 Ajax是一个具有同步功能的JavaScript库。W3Schools tutorial for Ajax