Search code examples
phpjavascriptmysqltimerstopwatch

Capture javascript stopwatch stop time and store it as php variable


I'm using this stopwatch:

<script language="JavaScript" type="text/javascript">
window.onload = function()
{
  stopwatch('Start');
}

<!--
var sec = 0;
var min = 0;
var hour = 0;
function stopwatch(text) {
   sec++;
  if (sec == 60) {
   sec = 0;
   min = min + 1; }
  else {
   min = min; }
  if (min == 60) {
   min = 0; 
   hour += 1; }

if (sec<=9) { sec = "0" + sec; }
   document.clock.stwa.value = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec;

  if (text == "Start") { document.clock.theButton.value = "Stop "; }
  if (text == "Stop ") { document.clock.theButton.value = "Start"; }

  if (document.clock.theButton.value == "Start") {
   window.clearTimeout(SD);
   return true; }
SD=window.setTimeout("stopwatch();", 1000);
}

function resetIt() {
  sec = -1;
  min = 0;
  hour = 0;
  if (document.clock.theButton.value == "Stop ") {
  document.clock.theButton.value = "Start"; }
  window.clearTimeout(SD);
 }
// -->
</script>

and would like to capture the time that the clock is stopped on, and then store it as a PHP variable so that I can insert it into our database along with a load of other PHP variables. Is this possible?

Thanks for any help


Solution

  • Spice up your code with some AJAX. Inside of function resetIt() pass the current timestamp to your php script.

    jQuery has a solid AJAX part and nice documentation with examples too.

    (Assuming jQuery loaded, up and running)

    function resetIt() {
      $.ajax({
        url: 'your.php',
        success: function(response){
          alert(response);
        }
      });
      sec = -1;
      min = 0;
      hour = 0;
      if (document.clock.theButton.value == "Stop ") {
      document.clock.theButton.value = "Start"; }
      window.clearTimeout(SD);
    }
    

    your.php (since all you need to save the actual timestamp we won't pass any variable to the PHP part. If you need to add specific variables (from JS) you can add them, of course)

    if(mysql_query("INSERT INTO `database` (`stopped`) VALUES (NOW())")) {
      echo 'success';
    } else {
      echo 'failed';
    }
    die();