MargateSteve Posted September 18, 2011 Share Posted September 18, 2011 I have found a fairly generic script for refreshing the content of a div without refreshing the whole page and although it works fine, there are a few things I would like to improve on if they are possible. <script src="http://code.jquery.com/jquery-latest.js"></script> <script> $(document).ready(function() { $("#refreshdiv").load("activity.php"); var refreshId = setInterval(function() { $("#refreshdiv").load('activity.php?randval='+ Math.random()); }, 9000); $.ajaxSetup({ cache: false }); }); </script> <div id="refreshdiv"> </div> There are, in all, 6 divs that I am looking to refresh. 3 of them show on every page and the other 3 are all on the same page (giving a total of 6 on that page) and my 3 questions are....... 1. All of the divs are pulling results from a MySQL db, via Php, and what I have had to do for now is set up a new page for each of the divs content and have them pulled into the requesting page, resulting in 6 new pages. Is there a way that I can keep the content all on the one page and have Ajax refresh the query/result within the div tags instead of loading/reloading an external page. I assume that the '.load' section may be the key to this. My guess is that it would be possible to write a function that would do this but am not sure where to start. 2. At the moment, there are 6 different scripts to allow the refresh of 6 different divs. Is there a way to cover all 6 divs in one script? I would assume that I could name all the divs the same but if question 1 is not achievable, then I will still have to call 6 different pages within the script. I would imagine that I could wrap the whole page in a refreshing div but would guess that is not recommended. 3. This may be one for the php forum but I will give it a go anyway. I have been playing around with setting up a page view counter and it works fine with the following code $stamp = date('Y-m-d H:i:s'); $page = $_SERVER['REQUEST_URI']; $page_view = mysql_query (" SELECT * FROM page_views WHERE url = '$page' "); $page_view_match = mysql_num_rows($page_view); $page_view_row = mysql_fetch_assoc($page_view); if($page_view_match > 0) { mysql_query("UPDATE page_views SET member_views = member_views +1, last_member = '".$stamp."' WHERE url = '$page'" ) or die(mysql_error()); } else { mysql_query ( "INSERT INTO page_views (url, member_views, last_member) VALUES ( '".$page."', '1', '".$stamp."' )" ) or die(mysql_error()); } On first page load, it correctly creates/updates 'path/to/file.php'. On the ajax reload it always adds a new record with a random number like 'path/to/file.php?randval=0.6086456351913512&_=1316338620227'. I have tried taking out the '?randval='+ Math.random()' part and it left 'path/to/file.php?_=1316338620227' which, I guess, may be a time stamp. I need it to ignore anything from randval onwards to make sure it only enters the initial page view into the table and not every Ajax reload of a div. I have tried pre-empting the above code with $path = $_SERVER['REQUEST_URI']; $pos = stripos($path, '/randval=/'); if ($pos>0) { to try to make it ignore any Ajax reloads but it does not work. So going back to the original Ajax script, would it be possible to set a counter variable to zero on page load and increment it on any reload? That way, I can tell the php script to only update the page views when the counter is zero. I know this sort of thing would be possible in php alone but as I am having trouble getting php to recognise that I want the 'randval=' part of the code ignored, I am not sure where to go now! Thanks in advance for any help. Steve Link to comment https://forums.phpfreaks.com/topic/247369-refreshing-div-content/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.