我正在创建一个文本框,其中文本将在用户输入后自动更新到mysql而没有submit.Problem现在是文本框不会更新数据库。这是我通过参考下面的所有意见编辑的。虽然仍然有一些问题,但现在比没有显示更好。谢谢。
这是文本框输入
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"getComment($id,this)\" /></td>";
这是我的javascript
function getComment(id, txt_box)
{
var value = txt_box.value;
$.ajax({
'url': 'updatecomment.php',
'data': {"id": id, "comment": value},
'success': function (response) {
console.log(response);
//TODO: use server response
}
});
}
,最后是updatecomment.php
<?php require_once("../includes/connection.php") ?>
<?php require_once("../includes/functions.php") ?>
<?php
$id =$_GET['id'];
$comment = $_GET['comment'];
$query = "UPDATE tblinternapplication SET comment = '".mysql_real_escape_string($comment) ."' WHERE id = $id";
$result = mysql_query($query, $connection);
?>
答案 0 :(得分:1)
您的查询有多个错误。它应该是:
$query = "UPDATE tblinternapplication SET comment = '".mysql_real_escape_string($comment) ."' WHERE id = $id";
虽然不应使用mysql_*
,因为它们已被弃用。使用MySQLi或PDO代替。注意SQL注入。
答案 1 :(得分:1)
尝试替换
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onPressKey=\"getComment($id,this.id)\" required/></td>";
与
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"getComment($id,this.value)\" required/></td>";
修改强>
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"getComment($id,this)\" required/></td>";
在你的函数中获取像
这样的值function getComment(txt_box, comment) {
var value = txt_box.value;
}
您需要再次发送文本框值而不是ID,并尝试更新您的更新查询,如
$query = "UPDATE tblinternapplication
SET comment = ".mysql_real_escape_string($comment) ."
WHERE id = $id";
这里$ id是一个整数,你在最后错过了结束“。并尝试使用mysqli_ *语句或pdo语句而不是mysql_ *语句,因为它们已被弃用
主要的是确保数据库中的注释列应该是根据您的评论文本的数据类型
答案 2 :(得分:1)
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyPress=\"javascript: return getComment($id,this.value);\" required/></td>";
您使用onPressKey
代替onKeyPress
答案 3 :(得分:1)
以下是您的代码
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onPressKey=\"getComment($id,this.id)\" required/></td>";
将此更改为
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onKeyup=\"getComment('$id',this.value)\" required/></td>";
基本上当你传递javascript函数的值时,如果传递的值是字符串或整数而不是变量将它们用单引号括起来,如 getComment('$ id',this.value)
我添加的另一个更改是onKeyup而不是onKeyPress。这是因为当按下某个键时 onKeyPress 事件会发生 ,而您调用的函数将没有您键入的最后一个字符。然而,当您释放密钥时, onKeyPress 事件将被触发,即在输入字符后,将在文本框中输入所有字符 < / p>
类似地,在Mysql查询中,始终将值括在单引号中,如下面的 希望您了解这些变化 $query = "UPDATE tblinternapplication SET comment = '".mysql_real_escape_string($comment) ."' WHERE id = '$id'";
答案 4 :(得分:0)
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onPressKey=\"getComment($id,this.id)\" required/></td>";
应该是
echo "<td class=\"align-center\"><input type=\"text\" name=\"comment\" id=\"comment\" onkeypress=\"getComment($id,this.id)\" required/></td>";