I have created a webpage which is designed to ping my databse every 5 seconds for new changes but at the moment my method is buggy, sometimes new entries are doubled up and sometimes they don't appear at all, how am I best to go around this.
I've got this Jquery snippet for AJAX requests to the php script which checks the databse. I use javascript to get the time and use a function to change the timezone around.
$(document).ready(function() {
var last = new Date().addHours(10).toMysqlFormat();
function new(){
var url = 'new.php?l=' + last;
$('#new').append($('<div>').load(url));
last = new Date().addHours(10).toMysqlFormat();
//console.log("Updated:" + last + ".");
}
setInterval(function(){new()}, 5000);
});
I send to that script the last time it was checked for updates.
This PHP script is as follows:
if (isset($_GET["l"])){
$dmin = $_GET["l"];
$dmax = date('Y-m-d H:i:s');
$sql = "SELECT `ID`,`Name` FROM `foo` WHERE (`datetime` BETWEEN '".$dmin ."' AND '".$dmax ."') ";
After I query the sql statement I loop through the results and return it to the javascripts, where in my process can these errors be coming from or is there a better way to do this?
I think that one of the problems is that my PHP time is 1 or 2 seconds different from the javascript time as for a test, I changed my date back 5 seconds and I got a duplicate of everything. I need a way of using the updates so that the page can be loaded for months and not lose track