保存并读取数据库中的复选框值,更改标签的状态

时间:2019-01-16 14:06:39

标签: javascript php jquery html

我必须使用复选框作为首选项,因此我将其保存在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>

2 个答案:

答案 0 :(得分:1)

  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
    
  2. 从javascript中删除Urlcheck和选中的函数

  3. 在标签中添加此代码,而不是标签1

    echo ($dbox == 1 ? 'Abled' : 'Disabled');
    

答案 1 :(得分:0)

一种更好的方法是使用Ajax,其中将值插入数据库的代码是与带有复选框的页面不同的页面。 Ajax是一个具有同步功能的JavaScript库。W3Schools tutorial for Ajax