2014-02-21 147 views
0

我想要我的代碼將數值1放入數據庫(如果選中了複選框),如果未選中,則爲0。但是,我現在的代碼只會將行更新爲1,但不會更新爲0.在最後一個小時內,我一直對此感到震驚,這非常令人沮喪。複選框事件只在檢查,而不是在複選框

的Javascript

$('#onoffswitch6').change(function() { 
    var checked = $(this).is(':checked'); //true or false? 
    $.ajax({ 
     type: "post", 
     url: "call.php", 
     data: { onOrOff : checked } 
    }); 
}); 

call.php

<?php 
//Start session 
session_start(); 

//Include database connection details 
require_once('connection.php'); 

if(isset($_POST['onOrOff'])) 
{ 
    if ($_POST['onOrOff'] == false) { 
     global $onOrOff; 
     $onOrOff = 0; 
    } else if ($_POST['onOrOff'] == true) { 
     global $onOrOff; 
     $onOrOff = 1; 
    }; 

$qry = "UPDATE member SET checkbox='$onOrOff' WHERE id='$_SESSION[SESS_MEMBER_ID]'"; 
$result = mysql_query($qry) or die("An error occurred ".mysql_error()); 
} 
+0

哪裏是你的cdoe爲沒有選上,沒有用於檢查? –

+0

你有沒有做過任何日誌記錄,看看腳本是否正確執行? –

+1

可以做'var checked = $(this).is(':checked')? 1:0;' – tymeJV

回答

0

false應該'false'

true應該'true'

Php不會將ajax傳遞的值視爲布爾值,但它會將$_POST['onOrOff']作爲字符串處理,請運行此代碼,執行此類操作。

if ($_POST['onOrOff'] == 'false') { 
    global $onOrOff; 
    $onOrOff = 0; 
} else if ($_POST['onOrOff'] == 'true') { 
    global $onOrOff; 
    $onOrOff = 1; 
}; 
0

在php中,您正在檢查值是真/假,但是進來的是一串「真」或「假」的字符串。將其更改爲

if ($_POST['onOrOff'] == "false") {... 

或類似

$onOrOff = ($_POST['onOrOff'] == "true" ? 1 : 0);