Я работаю над доброй программой, основной частью которой является подсчет времени, которое пользователь потратил на веб-сайт, а затем для сохранения записанного времени в базе данных.
Как это работает: на странице у пользователя есть кнопка, чтобы начать записывать свое время, затем он перемещается на другую страницу, где он может сэкономить свое время. Сохраненное время отправляется в php файл (через ajax), а затем php файл помещает значение в базу данных для текущего пользователя.
ПРОБЛЕМА заключается в том, что после 60 секунд времени записи таблица в базе данных начинается с нуля (00:00:00). Например: если пользователь уже записал 30 секунд (00:00:30), тогда он запускает скрипт, записывает 40 секунд больше, а затем вместо 00:01:10 в базе данных его счет становится ясным (00:00:00). )
Подробности ниже.
MySQL Table - тип: время
//JS
$("#stopTimer").click(function(event) {
var time = event.timeStamp;
$.ajax({
type: 'POST',
async: true,
url: 'timer.php',
data: {time: time}
});
});
//PHP
$time = ($_POST['time']/1000);
$stmt = $db->prepare("UPDATE members SET timeOnline = timeOnline + '$time' WHERE memberID = :memberID");
$stmt->execute(array(':memberID' => $memberID));
Если вы хотите добавить секунды в столбец TIME
используйте + INTERVAL x SECOND
:
UPDATE members
SET timeOnline = timeOnline + INTERVAL :time SECOND
WHERE memberID = :memberID
$stmt->execute(array(':memberID' => $memberID, ':time' => $time));
Попробуйте это по-другому. Сохраните один дополнительный столбец с именем start_time
. Когда пользователь сначала нажимает эту кнопку, на это время сохраняется текущее время. Когда пользователь просматривает на разных страницах, просто вычислите разницу во времени в timeOnline
. Это также будет проще.
start_time
и current time
.