更改复选框会自动更改数据库记录

时间:2013-10-01 02:14:56

标签: php ajax

在我的数据库中,我的状态是布尔类型,

谢谢我有与数据库的连接

    if (!$result = mysqli_query($con,"SELECT * FROM cursos"))
{
    die("Error: " . mysqli_error($con));
}

并使用复选框

显示此字段的状态
 <?php if($row['status'] == 1) { 
    echo "<td>"."<input type = 'checkbox' checked='checked' name ='complete' value= '1'/>"."</td>";
}else
{
    echo "<td>"."<input type = 'checkbox'  name ='incomplete' value= '0'/>"."</td>";
}
?>

所以我需要做的是,一旦我选中或取消选中任何一个复选框,数据库字段就会自动显示,需要提交按钮。

好的,我确实将我的代码编辑为您建议的内容并且现在正在运行,这是新代码:

Ajax代码

<script>
$(document).ready(function(e) {
$('.checkboxtest').change(function(){
    if( $('.checkboxtest').prop('checked') )
       {checkboxstatus = '1';}
       else
       {checkboxstatus = '0';}
$.ajax({
        type: "POST",
        url: "checkboxtestbackend.php",
        data: {checkboxstatus: checkboxstatus},
        })
        .done(function(data, textStatus, jqXHR){alert(textStatus);})
        .fail(function(jqXHR, textStatus, errorThrown){alert(jqXHR+"--"+textStatus+"--"+errorThrown);});
});//end change
});//end ready
</script>

html代码是:

<?php if($row['status'] == 1) { 
    echo "<td>"."<input type = 'checkbox' class='checkboxtest' checked='checked' name ='complete' value= '1'/>"."</td>";
}else
{
    echo "<td>"."<input type = 'checkbox' class='checkboxtest' name ='incomplete' value= '0'/>"."</td>";
}
?>

和php后端代码是:

<?php
$checkboxstatus = $_POST['checkboxstatus'];

$host = "localhost";
$user = "username";
$password = "password";
$dbname = "name";

$cxn = mysqli_connect($host,$user,$password,$dbname);
if (mysqli_connect_errno()) {echo "No connection" . mysqli_connect_error();}

$query = " UPDATE cursos
           SET status = '$checkboxstatus'
           WHERE id = '12'";
$result = mysqli_query($cxn, $query) or die ("could not query database 1");
?>

3 个答案:

答案 0 :(得分:0)

使用<input onclick="updateDatabase(this);" />

然后在你的javascript“更新数据库”中执行一个ajax请求到你负责修改数据库的php文件。

答案 1 :(得分:0)

我发现这篇关于在php上使用ajax的有用文章。

PHP Using AJAX INSERT INTO MYSQL

他们是如何做到的:

var func = '';
var param = '';
var elem = '';

function myeval()
{
    var evalthis = func+'('+param+')';
    if(httpObject.readyState == 4)
    {
        eval(evalthis);
    }
}

function getHTTPObject()
{
    if (window.ActiveXObject) 
        return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) 
        return new XMLHttpRequest();
    else 
    {
        alert("Your browser does not support AJAX.");
        return null;
    }
}

function changesomething(myphpurl, setchangedstate)
{
    httpObject = getHTTPObject();
    if (httpObject != null) 
    {
        httpObject.open("GET", myphpurl);
        httpObject.send(null);
        httpObject.onreadystatechange = setchangedstate;
    } else {
        alert("oops!");
    }
}


function display_results(x)
{
    if(httpObject.readyState == 4)
    {
        alert("This is a parameter passed through the ajax process to this function: "+x);
        document.getElementById('some_element').innerHTML = httpObject.responseText;
    }
}

function add_info(x)
{
    var myurl = 'some_php_file.php?SomeKey='+x;
    func = 'display_results';
    param = x; // or some other value!
    changesomething(myurl,'myeval');
}

答案 2 :(得分:0)

Noob警告。

对我来说,这是一个有趣的问题,因为我很可能需要在接下来的几个月内完成,所以我想我需要一个小时才能试一试。

这是html(无聊):

<table class="centerme">
<tr>
<td>First Checkbox:<input type="checkbox" id="checkboxtest"></td>
</tr>
</table>

这是javascript:

<script>
$(document).ready(function(e) {
$('#checkboxtest').change(function(){
    if( $('#checkboxtest').prop('checked') )
       {checkboxstatus = "YES";}
       else
       {checkboxstatus = "NO";}
$.ajax({
        type: "POST",
        url: "checkboxtestbackend.php",
        data: {checkboxstatus: checkboxstatus},
        })
        .done(function(data, textStatus, jqXHR){alert(textStatus);})
        .fail(function(jqXHR, textStatus, errorThrown){alert(jqXHR+"--"+textStatus+"--"+errorThrown);});
});//end change
});//end ready
</script>

这是后端php:

<?php
$checkboxstatus = $_POST['checkboxstatus'];

$host = "xxxxxxxxxxxxxxxxx";
$user = "yyyyyyyyyyyyyyyyy";
$password = "zzzzzzzzzzzzzzzzzzzzzz";
$dbname = "qqqqqqqqqqqqqqqqqqqqqqqqqq";

$cxn = mysqli_connect($host,$user,$password,$dbname);
if (mysqli_connect_errno()) {echo "No connection" . mysqli_connect_error();}

$query = " UPDATE testtable
           SET lastname = '$checkboxstatus'
           WHERE localid = '158' ";
$result = mysqli_query($cxn, $query) or die ("could not query database 1");
?>

当我将它上传到我的网站时,它似乎工作(得到一条我还没想到的错误信息,但数据库更改(使用MySQL Workbench检查)。

你可能只需要一个$()。POST,但我已经习惯了$ ajax。

从专家那里得到一些评论会很有意思。

PS - 发现错误 - 我不应该在ajax查询中包含dataType。

现在很棒!

哇噢!