0

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

谢谢我已经连接到数据库

    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>";
}
?>

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

好的,我确实按照您的建议编辑了我的代码,它现在可以工作了,这是新代码:

阿贾克斯代码

<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");
?>
4

3 回答 3

0

菜鸟警告。

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

这是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。

现在效果很好!

呜呼!

于 2013-10-01T03:46:10.777 回答
0

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

然后在你的javascript“updateDatabase”中对你处理修改数据库的php文件执行一个ajax请求。

于 2013-10-01T02:19:15.500 回答
0

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

PHP 使用 AJAX 插入 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');
}
于 2013-10-01T02:25:12.117 回答