<div id="wrap-body">
<form action="" method="post">
<input type="text" name="username" id="username">
<input type="text" name="msg" id="msg">
<input type="button" id="submit" value="Send">
</form>
<div id="info">
</div>
</div>
<script>
$(document).ready(function (){
$('#submit').click(function (){
var username = $('#username').val();
var msg = $('#msg').val();
if(username != "" && msg != ""){
$.ajax({
type: 'POST',
url: 'get.php',
dataType: 'json',
data:{ 'username' : username , 'msg' : msg},
success: function (data){
var ilan=data[0].counter;
var i = 0;
for(i=0;i<=ilan;i++){
$('#info').append("<p> you are:"+data[i].username+"</p> <p> your message is:"+data[i].mesg);
}
}
});
}
else{
alert("some fields are required");
}
});
});
</script>
PHP:
<?php
$host='localhost';
$username='root';
$password='12345';
$db = 'feeds';
$connect = mysql_connect($host,$username,$password) or die("cant connect");
mysql_select_db($db) or die("cant select the".$db);
$username = $_POST['username'];
$msg = $_POST['msg'];
$insert = "INSERT INTO info(user_name,message) VALUES('$username','$msg')";
if(@!mysql_query($insert)){
die('error insertion'.mysql_error());
}
$get = "SELECT * FROM info ";
$result=mysql_query($get)or die(mysql_error());
$inside_counter = mysql_num_rows($result);
$data=array();
while ($row = mysql_fetch_array($result))
{
$data[] = array(
'username'=>$row['user_name'],
'mesg'=>$row['message'],
'counter'=>$inside_counter
);
}
echo json_encode($data);
?>
答案 0 :(得分:2)
SELECT *
FROM "table_name"
ORDER BY "id" desc
LIMIT 1
这是一个从表中获取最后一条记录的SQL查询。它根据id
返回最后一次插入。 id
应该是自动增量字段。我认为这对你有所帮助。
答案 1 :(得分:0)
因为您将表中的所有行再次返回到
的ajax调用$get = "SELECT * FROM info ";
如果你再次返回所有这些,你将不得不测试它们是否已经存在,然后再使用jQuery附加它们 也许只返回新插入的行。
或
jQuery已经知道它发送给服务器的数据,只返回成功为true或false,然后如果jQuery为true则附加它,不需要再将数据返回给客户端
修改
我不打算为你编写代码,但也许这些建议可能会有所帮助
mysql_query($insert)
链接此处以供参考 - http://php.net/manual/en/function.mysql-query.php
将返回true为false,具体取决于insert语句是否成功
您还可以通过调用
来检查它是否实际插入了一行mysql_affected_rows()
链接此处以供参考 - http://php.net/manual/en/function.mysql-affected-rows.php
然后假设插入成功(即来自mysql_query($ insert)或mysql_affected_rows()&gt; 0),只需返回成功(例如
) echo json_encode(true);
然后在客户端,您可以执行以下操作:
(仅限jQuery Ajax成功函数:)
success: function (data){
if (data) {
$('#info').append("<p> you are:"+username +"</p> <p> your message is:"+msg);
}
else
{
alert('There has been an error saving your message');
}
}
使用您刚刚用于发送请求的变量
(请注意,此处提供的代码示例仅供参考,不打算逐字使用)
虽然有几点意见。您打算仅通过ajax发布数据吗? (即没有页面刷新)好像就是这种情况,你需要从表单提交事件处理程序返回false来停止页面完整发布。此外,您似乎没有任何逻辑,或者不担心输入完整的重复项(即相同的用户名,相同的消息) - 不确定您是否要担心这一点。
我也可能会通过id跟踪所有消息(虽然我不知道你的数据库结构),也许使用
mysql_insert_id()
链接此处仅供参考 - http://php.net/manual/en/function.mysql-insert-id.php
这样每条消息都可以拥有唯一的ID,即使用户名和消息相同,也可能更容易建立重复
有很多方法可以解决这个问题。
无论如何希望有所帮助
PS - 使用mysql_ - 命令组这些天一般不鼓励,使用mysqli_函数范围代替