我无法在更改mysql数据时让我的php聊天脚本自动刷新。我已经做了很多研究,似乎很多其他人的解决方案比我需要的更复杂(我想要一些非常基础的东西)。
我不知道任何javascript,如果涉及到js,我们将不胜感激。
这是我创建的php脚本。它正在发挥作用(至少对我而言)。
include 'connect2.php';
echo "
Enter a Message:
<form method=post action='' name=chat>
<input type=text name=message>
<input type=submit name=chat value=Submit>
</form>
";
if (isset($_POST['chat'])) {
$message = $_POST['message'];
mysql_query("INSERT INTO chat set message='$message',user='$_SESSION[username]'");
}
$sql = "select * from chat order by id desc limit 15";
$result = mysql_query($sql) or die ("An error has occured with in the database.");
while ($data = mysql_fetch_assoc($result)) {
$db_message = $data['message'];
$db_user = $data['user'];
echo "$db_user : $db_message <br>";
}
?>
任何帮助将不胜感激,谢谢! :)
答案 0 :(得分:0)
您可以使用setInterval
和jQuery
库ajax函数来检查它。
例如,使用jQuery
非常简单:
$(document).ready(function() {
// check once in five seconds
setInterval(function() {
$.get('/script.php', {do: 'new_messages'}, function(response) {
if(response == 1) {
window.location.reload();
}
});
}, 5000);
});
在服务器上的某个地方:
if(isset($_GET['do']) && $_GET['do'] == 'new_messages') {
// some your code that detects if there's any new messages, and sets
// $there_are_new_messages to true, if there's any
...
if($there_are_new_messages) {
echo 1;
exit; // avoid further output
}
}
请记住,要实现这一点,您需要确保在ajax阻止之前没有输出,因为您可能会遇到意外结果。
还要考虑使用输出根本不是一个很好的做法,以显示您的脚本一切正常。更好的方法是使用相应的响应代码设置HTTP标头。
答案 1 :(得分:0)
在你的情况下执行此操作的最佳方法可能是使用Ajax(和jQuery)并每隔X秒刷新一次。
Ready Handler- http://api.jquery.com/ready/
Javascript Timer- http://www.w3schools.com/js/js_timing.asp
Ajax请求 - http://api.jquery.com/jQuery.post/
PHP json_encode- http://php.net/manual/en/function.json-encode.php
$( document ).ready(function() { //set up refresh timer on page load
var refreshTimer = setInterval(function(){refreshMessages()},5000); //creates timer to request every 5 seconds
});
function refreshMessages(){
$.post( "getMessages.php", function( data ) { //fire ajax post request
alert("Got messages: " + data); // this just alerts the data when the request is done, you'll probably want to format/print
});
}
在getMessages.php方面,您需要通常的方式从数据库中提取消息。在这种情况下,json编码您的php消息数组将是一种简单的方法来迭代返回的对象。
<?php
$messages = // get messages array from database
echo json_encode($messages);
?>