我需要每隔5秒自动刷新一次mysql数据表中的内容,但一次只显示一条不同的记录,在无限循环中遍历每条记录。
我加载news.php,有这个js:
<script type="text/javascript">
var auto_refresh = setInterval(function () {
$('#canvas').load('content.php').fadein("medium");}, 5000);
// refresh every 5 seconds
</script>
content.php具有数据库连接
$query_Recordset5 = "SELECT * FROM news";
$Recordset5 = mysql_query($query_Recordset5, $connection) or die(mysql_error());
$row_Recordset5 = mysql_fetch_assoc($Recordset5);
$totalRows_Recordset5 = mysql_num_rows($Recordset5);
以及回显到页面的字段。
据我所知,你必须每次创建一个计数器并带回一个不同的记录,但我很难用它。
由于
答案 0 :(得分:1)
如果您的表格有自动增量字段(例如“id”)。首先传递page.php和id为0,因此它将获取大于0的自动增量字段,然后通过jquery传递那些字段ID。当您再次发送它时,它将不会包括在内,因为您将使用大于号。
if num_rows == 0检查是否有任何字段,如果没有,那么它会假设你发送的自动增量字段是最后一个,然后它将运行sql语句自动增量值。
<?php
// page.php
$id = (int) $_REQUEST['id'];
$sq = "select * from news where id > ".$id." order by id asc limit 0,1";
$qu = $con->query($sq);
if ($qu->num_rows == 0) {
$sq2 = "select * from news order by id asc limit 0,1";
$qu2 = $con->query($s2);
while ($fe = $qu->fetch_assoc()) {
echo $fe['id']."|".$fe['content'];
}
} else {
while ($fe = $qu->fetch_assoc()) {
echo $fe['id']."|".$fe['content'];
}
}
?>
<script>
$(document).ready(function() {
setInterval(function(){ updateNews(); }, 5000);
});
function updateNews() {
var id = 0;
id = $("#hidden-id").val();
$.get("page.php?id=" + id, function(data) {
// I use $.get so that I can split the data that it returns before populating
// the #canvas. This way we can strip off the first part which is the auto
// increment
var ref = data.split('|');
$("#hidden-id").val(ref[0]);
$("#canvas").html(ref[1]);
});
}
</script>