检查复选框状态并基于它执行PHP查询

时间:2016-03-01 21:35:09

标签: php mysql checkbox

我在表格中有以下复选框:

<td><span id='checkbox'><input type='checkbox' name='secret' value='true'> Share Anomolously? </span></td>

我已根据this上一个问题更改了我的PHP代码。我有以下代码,根据是否选中该复选框执行两个不同的查询:

$post_msg = @$_POST['msg'];

if (isset($_POST['secret'])=='true' && $post_msg != "" ) {
    // Checkbox is selected
    $posted_info = date('l jS \of F Y h:i:s A');
    //$date_of_msg  = date("Y-m-d");
    //$time_of_msg = date("H:i");
    $msg_sent_by  = $username;
    $insert_query = "INSERT INTO user_thoughts VALUES ('','$post_msg','','' ,'$attach_name','$msg_sent_by','')";
    $run_query = mysqli_query($connect, $insert_query) or die(mysqli_error());
} else if (isset($_POST['secret'])!=='true' && $post_msg != "" ) {
   // Alternate code
    $posted_info = date('l jS \of F Y h:i:s A');
    //$date_of_msg  = date("Y-m-d");
    //$time_of_msg = date("H:i");
    $msg_sent_by  = $username;
    $insert_query2 = "INSERT INTO user_thoughts VALUES ('','$post_msg','','' ,'$attach_name','$msg_sent_by','no')";
    $run_query2 = mysqli_query($connect, $insert_query2) ;
}

使用此当前代码,当用户点击按钮发布消息$post_msg并且未选中复选框时,它会在数据库中插入no,而不应该。只是解释,插入查询''中的最后INSERTS数据到名为shared的列,并且定义值为yes

因此,如果用户发布了一条消息,并且未选中该复选框,则应执行第一个if语句。如果用户在选中复选框的情况下共享帖子,则应执行INSERTSshared中的no号的第二个if语句。

目前,即使未选中该复选框,也会始终在shared列中插入ArgumentNullException

1 个答案:

答案 0 :(得分:0)

这是因为:

isset($_POST['secret'])=='true'

只检查它是否有值。它没有检查它们的价值是什么。