【发布时间】:2018-04-28 05:56:55
【问题描述】:
这是我的html:
<tr>
<td class="tg-031e"><input type="checkbox" name="sel_a" class="a_qual" data-id23="<?php echo $row["id"]; ?>"
<?php if($row["a_qual"] == 1) { echo "checked='1'"; } ?>
></td>
<td class="a" colspan="2" data-id3="<?php echo $row["id"]; ?>" contenteditable><?php echo $row["a"] ?></td>
</tr>
这是我的 jQuery:
$(document).on('change', '.a_qual', function(){
var id = $(this).data("id23");
var a_qual = $("input[type='checkbox']").val();
edit_data(id, a_qual, "a_qual");
console.log('my message' + a_qual);
});
这是我的 edit_data 函数:
function edit_data(id, text, column_name)
{
$.ajax({
url:"edit.php",
method:"POST",
data:{id:id, text:text, column_name:column_name},
dataType:"text",
success:function(data){
fetch_data();
}
});
}
这是我的edit.php:
include_once("includes/connection.php");
$sql = "UPDATE questions SET ".$_POST['column_name']."='".$_POST['text']."'
WHERE id='".$_POST['id']."'";
// echo $sql;
if(mysqli_query($connection, $sql))
{
echo 'Data Inserted';
}
我不知道自己做得足够好才能完成这项工作,而且在阅读了互联网上的数十篇帖子后,我真的很难过。出于某种原因,我可以让它将我的数据库值更改为“1”,然后它就卡在那里了。在我的数据库中,我有一个名为“a_qual”的列来存储复选框的“质量”,并将其设置为 TINYINT。谁能解决我的问题?
【问题讨论】:
-
浏览您的代码,我认为代码的预期行为应该是切换数据库中 a_qual 的值,因为任何 id 都将在 0 和 1 之间更改。取消注释语句 echo $sql 以查看是否正确创建了 sql 语句。复制sql,分别在mysql中执行,看看有没有语法错误。如果这部分很好,请告诉我们,我们期待找到更多的问题
-
这是个好主意,我很想尝试一下,但我的 edit.php 位于单独的文件中。我不知道如何让它显示 echo $sql 信息。就像它在后台执行一样。我不太了解jquery,无法让它向我展示这一点。但是,我确实放了“警报(数据);”就在“fetch_data();”的正上方在 edit_data 函数中并获得了一些信息:“Array ([id] => 304 [text] => on [column_name] => a_qual) 更新问题 SET a_qual='on' WHERE id='304' Data Inserted So, it似乎正在选择“on”而不是“1”或“0”有什么建议吗?
-
使用浏览器中的开发者工具来执行/运行edit.php隔离。
-
好的,我能够在警告框中看到 $sql ......所以这非常有帮助!所以,看来我的主要问题是我从来没有从我的复选框中得到“0”......我总是得到“1”。这可能是我对复选框工作方式的遗漏吗?我刚刚读到必须在其中放置一个 value=0 的隐藏字段...会这么简单吗?稍后我将不得不进行实验......
标签: jquery checkbox dynamic edit