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

だから私がする必要があるのは、チェックボックスのいずれかをオンまたはオフにすると、送信ボタンを必要とせずにデータベースフィールドが自動的に変更されることです。

さて、あなたが提案したようにコードを編集しましたが、現在は機能しています。新しいコードは次のとおりです。

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

3 に答える 3

0

ノブ警告。

これは私にとって興味深い質問です。なぜなら、おそらく今後数か月にわたってそれを行う必要があるからです。1 時間かけて試してみることにしました。

これが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 に答える