PHP/MySQL/JS Таймер

BoBySS

Registered
Здравейте, програмисти! :)

Ситуацията е следната:
Запазвам моментния час (ч/м/с) в MySQL база данни, като мога да добавям 1,2,5 и 10 часа към него (Пример: &сегашното време +1). Визуализирам го с прост PHP/JavaScript таймер. Но тук възникна проблем - при рефреш на браузъра (задържам Ctrl + R за Опера) ми изкарва всичко както си му е реда, примерно "Остават 30:33 минути до...". Но след точно 1 секунда, изписва NaN, там, където трябва да е 30:32. Някой има ли идея как да го оправя? Грешката ми е някъде по JavaScript-a, но къде?

Ако $var3 се премахне и се изпише само $var2 (в JS), всичко си е наред, но там, както се сещате форматът на часа е timestamp и е от вида 3600 секунди за 1 час, а на мен ми трябва 1 час да се визуализира като 1:00:00, а не като 3600. Подразбира се, че следващата стойност трябва да е 0:59:59, а не 3599 и т.н.

Структурата на базата ми данни е:
id | timee | plus, т.е. номер | време на добавянето | колко да се добавят (1,2,5,10 часа)

Прилагам единствения файл:

Код:
<?php
	require "conf.php";
	if(isset($_POST['add'])) {
		$timee = time();
		$plus = $_POST['plus'];
		$result = mysql_query("INSERT INTO `time` (id, timee, plus) VALUES (NULL, '$timee', '$plus')") or die(mysql_error());
	}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php if ($_POST['add']) : ?>
	Времето е добавено!<br/><br/><br/>
	<a href="addtime.php">Обратно</a>
<?php endif; ?>
<?php if(!isset($_POST['add'])) : ?>
	<p>
		<?php
		$result = mysql_query("SELECT * FROM `time` ORDER BY timee DESC LIMIT 1") or die(mysql_error());
			while ($row = mysql_fetch_array($result)) {
				$date = date("G:i",$row['timee']);
				print "<font color=\"Blue\">Current time:</font> <font color=\"Red\">". $date ."</font>   ";
				print "<font color=\"Green\">+".$row['plus']."</font>     ";
				print "New date: ". date("G:i",($row['timee'] + $row['plus'] * 60 * 60)) ."<br/>";
				
				//Настройка на брояча
				$var = $row['timee'] + $row['plus'] * 60 * 60;
				$var2 = $var - time();
				$var3 = date("i:s", $var2);
			}
			print "<br/>NOW: ".date("G:i:s", time());
		?>
		<form action="" method="post">
			<b>Време:</b>
				<select name="plus">
					<option value="1">+1 hour</option>
					<option value="2">+2 hours</option>
					<option value="5">+5 hours</option>
					<option value="10">+10 hours</option>
				</select><br/><br/>
			<input type="submit" name="add" value="Дай гаааз!" />
		</form>

		<div id="countDown"></div>
		
		<script> 
		window.onload = function() {
			startCountDown("<?= $var3 ?>", 1000, myFunction);
		}
		function startCountDown(i, p, f) {
			var pause = p;
			var fn = f;
			var countDownObj = document.getElementById("countDown");
			if (countDownObj == null) {
				alert("div not found, check your id");
				return;
			}
			countDownObj.count = function(i) {
				this.innerHTML = i;
				if (i == 0) {
					fn();
					return;
				}
				setTimeout(function() {
					countDownObj.count(i - 1);
				},
					pause
				);
			}
			countDownObj.count(i);
		}

		function myFunction() {
			document.location.href="some_file.php";
		}
		</script>
	</p>
<?php endif; ?>
</body>
</html>

Поздрави!
 

Back
Горе