[PHP] [MySQL] Стереть таблицу после 60 секунд записи

0

Я работаю над доброй программой, основной частью которой является подсчет времени, которое пользователь потратил на веб-сайт, а затем для сохранения записанного времени в базе данных.

Как это работает: на странице у пользователя есть кнопка, чтобы начать записывать свое время, затем он перемещается на другую страницу, где он может сэкономить свое время. Сохраненное время отправляется в 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));
  • 2
    Какая часть не ведет себя так, как вы ожидаете? JS? PHP? SQL? Извлеките минимальный, но полный пример (ваш не тот), так как ваш вопрос не по теме.
  • 0
    Не совсем уверен, какой, я думаю, что обновление базы данных может быть проблемой здесь. Обновление не выполняется через 1 минуту записанного времени. Например - Вы не можете записать более 1 минуты.
Теги:
timestamp

2 ответа

0
Лучший ответ

Если вы хотите добавить секунды в столбец TIME используйте + INTERVAL x SECOND:

UPDATE members
SET timeOnline = timeOnline + INTERVAL :time SECOND
WHERE memberID = :memberID
  • 0
    Не совсем уверен, как это реализовать, пытаясь понять, как поместить переменную $ time в код Your.
  • 0
    @piotrSatlawa $stmt->execute(array(':memberID' => $memberID, ':time' => $time));
Показать ещё 1 комментарий
0

Попробуйте это по-другому. Сохраните один дополнительный столбец с именем start_time. Когда пользователь сначала нажимает эту кнопку, на это время сохраняется текущее время. Когда пользователь просматривает на разных страницах, просто вычислите разницу во времени в timeOnline. Это также будет проще.

  • 0
    Хм, это может быть, но я не совсем уверен, поможет ли это с обновлением времени в базе данных, потому что, если пользователь записывает более 60 секунд за один сеанс, он не записывается тогда.
  • 0
    Почему это не будет записано? Вы будете просто вычитать между start_time и current time .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню