I have this code that automatically displays a table with mysql data depending on the selection from a form.

I need to add code to make this refresh every 30 seconds. I ave googled this and after trying every single way I know to implement the setTimeout() function, I have almost given up.

Can anyone please help me here....

This is my code:
The form is:

<form> 
Select:
<select name="eqno" onchange="showPress(this.value)">
<option value="1" >Number 1</option>
<option value="2" >Number 2</option>
<option value="3" >Number 3</option>
</select>
</form>
var xmlHttp

function showPress(str)
{ 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="_data.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("txtHint").innerHTML=xmlHttp.responseText 

 } 
}


function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

Maybe something along the lines of this (untested)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv"Script-Content-Type" content="text/javascript">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Expires" content="0"> <!-- disable caching -->
    <title>Example</title>
    <script type="text/javascript">
    timerHandle = null;
    value = null;
    function showPress(val) {
      // Set the global variable 'value' to the value which the user
      // selected. It has been kept global so that it can be used
      // by the timeOut function even when there is no user event 
      // and the displayTable is called on the latest 
      // value from drop down.
      value = val;
      
      // Firstly populate the contents of the table.
      displayTable();
    
      // Create a new timer only if one doesn't already exist which
      // would call the displayTable function at an interval of
      // 30 seconds starting now.
      if(!timerHandle) {
        timerHandle = setInterval(displayTable, 30000);
      }      
    }
    
    function displayTable() {
      // Make an ajax request using 'value' and check the status
      document.getElementById("txtHint").innerHTML = xmlHttp.responseText 
    }
    </script>
</head>
<body>
  <form id="frm" name="frm" action="#">
  <select name="eqno" onchange="showPress(this.value)">
    <option value="1" >Number 1</option>
    <option value="2" >Number 2</option>
    <option value="3" >Number 3</option>
  </select>
  </form>
</body>
</html>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.