如何检测取消复选框和发送数据库查询与php


How to detect uncheck box and send db query with php

嗨,我正在使用以下代码,并使用一个简单的复选框来检测其是否为1或0,如果复选框被选中,则值变为1并且其成功工作,但当我为未选中的框编写代码时,我的逻辑任务未完成。代码是;

global $wpdb;
$myrows = $wpdb->get_var( "SELECT value FROM wp_geolocationdet" );
$fchk = $_POST["geolocrun"];

if (isset($fchk) && $fchk == "Yes"){
    $updatetable = $wpdb->update( 
    'wp_geolocationdet', 
    array( 
        'value' => '1', // string
    ), 
    array( 'activate' => 'status' ), 
    array( 
        '%s',   // value1
        '%d'    // value2
    ), 
    array( '%d' ) 
);
}

if (!isset($fchk)){
    $updatetable = $wpdb->update( 
    'wp_geolocationdet', 
    array( 
        'value' => '0', // string
    ), 
    array( 'activate' => 'status' ), 
    array( 
        '%s',   // value1
        '%d'    // value2
    ), 
    array( '%d' ) 
);
}

但问题是当它检测到没有复选框被选中时,它会自动使db '0'中的值,尽管我未选中它,或者只是刷新页面,它将其视为未选中的。如何克服这个问题?是否有一种方法可以真正检测到用户未选中复选框?

您可以添加:

if(isset($_POST["geolocrun"]))
{
 // Your code here
}

在代码的开头检查页面是否刷新或提交!

只是玩代码找到了答案,它可能会帮助别人寻找这个,表单和代码是在同一个页面上,所以你需要提供一个名称提交按钮。

<div class="chsub"> <input type="submit" name="chsave" value="Save"></div>

,然后检查是否正在被调用。

if ($_POST['chsave']){
//do action
}

以这种方式在页面刷新时,它不会被调用,所以值是完整的和工作的。