注意:
让我们首先建立一个连接并将其存储在一个单独的文件中(比如 connection.php):
<?php
/* ESTABLISH YOUR CONNECTION */
$con = new mysqli("localhost", "username", "password", "dbname");
/* CHECK CONNECTION */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
?>
我们现在可以获取所有现有数据并将它们存储在一个表中(您的主文件 - index.php?):
<table id="table">
<tr>
<th>id</th>
<th>player</th>
<th>brand</th>
<th>year</th>
</tr>
<?php
include("connection.php"); /* INCLUDE YOUR CONNECTION TO YOUR DATABASE */
if($stmt = $con->prepare("SELECT id, player, brand, year FROM bbcardindo")){ /* CHECK IF THE PREPARED STATEMENT IS TRUE */
$stmt->execute(); /* EXECUTE THE QUERY */
$stmt->bind_result($id,$player,$brand,$year); /* BIND THE RESULT TO THESE VARIABLES */
while($stmt->fetch()){ /* START LOOP THAT WILL FETCH ALL ROWS */
?>
<tr>
<td><?php echo $id; ?></td>
<td><?php echo $player; ?></td>
<td><?php echo $brand; ?></td>
<td><?php echo $year; ?></td>
</tr>
<?php
} /* END OF WHILE LOOP */
$stmt->close(); /* CLOSE THE STATEMENT */
} /* END OF PREPARED STATEMENT */
?>
</table> <!-- END OF TABLE -->
<input type="hidden" id="lastid" value="<?php echo $id; ?>">
<!-- WE WILL BE STORING THE LAST/LATEST ID IN A HIDDEN INPUT FIELD THAT WE WILL BE USING FOR OUR SCRIPT LATER -->
下载 jQuery 库 here 并将其放入您的项目文件夹中。然后让我们创建脚本,您需要每 30 秒获取一次新数据(您可以将它放在我们第一个代码的顶部;这仍然是您的主文件的一部分 - index.php ):
<script src="jquery-1.11.3.js"></script> <!-- CHANGE THE NECESSARY JS FILE DEPENDING ON THE VERSION YOU HAVE DOWNLOADED -->
<script type="text/javascript">
$(document).ready(function(){ /* START THE JQUERY */
setInterval(function() { /* START THE setInterval FUNCTION */
var lastid = $("#lastid").val(); /* GET THE VALUE OF THE HIDDEN INPUT FIELD */
var dataString = 'lastid=' + lastid; /* STORE IT AS A DATA STRING */
$.ajax({ /* START THE AJAX */
type: "POST", /* METHOD WE WILL BE USING TO PASS THE FORM */
url: "getnewdata.php", /* FILE WHERE WE WILL PASS THE DATA */
dataType: 'json', /* USE JSON AS THE DATATYPE FOR READING DATA BEING RETURNED FROM getnewdata.php */
data: dataString, /* THE DATA THAT WE WILL BE PASSING IN getnewdata.php */
success: function(result){
if(result.newid != ""){ /* IF THIS PASSES A NEW DATA */
$('#table tr:last').after(result.newtr); /* APPEND TO YOUR TABLE THE NEW DATA */
$("#lastid").val(result.newid); /* UPDATE THE HIDDEN INPUT FIELD WITH THE LATEST INSERTED ID */
} /* END OF CHECKING RETURNED DATA */
} /* END OF SUCCESS */
}); /* END OF AJAX */
return false;
}, 30000); /* SET TO 30 SECONDS */
}); /* END OF JQUERY */
</script>
然后创建我们将获取新数据的文件(getnewdata.php):
<?php
include("connection.php");
if(!empty($_POST["lastid"])){ /* IF THERE IS A PASSED DATA */
$newtr = '';
$newestid = '';
if($stmt = $con->prepare("SELECT id,player,brand,year FROM bbcardindo WHERE id > ?")){ /* GET ROWS GREATER THAN THE PASSED ON ID; CHECK IF THE PREPARED STATEMENT IS TRUE */
$stmt->bind_param("i",$_POST["lastid"]); /* BIND THE PASSED ON DATA TO THE QUERY; i STANDS FOR INTEGER, MEANING THAT WE WILL BIND A NUMERIC VALUE TO THE QUERY */
$stmt->execute(); /* EXECUTE THE QUERY */
$stmt->bind_result($id,$player,$brand,$year); /* STORE THE DATA TO THESE VARIABLES */
while($stmt->fetch()){ /* START FETCHING NEW ROWS */
$newtr = '
<tr>
<td>'.$id.'</td>
<td>'.$player.'</td>
<td>'.$brand.'</td>
<td>'.$year.'</td>
</tr>
';
$newestid = $id; /* STORE THE LAST ID */
} /* END OF WHILE LOOP OF FETCHING NEW DATA */
} /* END OF PREPARED STATEMENT */
echo json_encode(array("newtr" => $newtr, "newid" => $newestid)); /* PRINT THE RESULT IN JSON */
} /* END OF IF NOT EMPTY lastid */
?>
评论:
当您加载主文件 (index.php) 时,bbcardindo 表中的所有现有数据都将列在一个表中。最新的 id 将存储在隐藏的输入字段中。每 30 秒,程序将根据隐藏的输入字段检查新数据。新数据将作为新行自动添加到表格底部。