[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дата, время.
timcess
Идея такая.
Нужно посчитать время между двумя запусками скрипта (типа голосовалки, раз в 24 часа).
Можно ли организовать это как-то так:

<?php
$time = time();
$sql = "SELECT * FROM votes WHERE login='$login'";
$res = mysql_query($sql);
$res = mysql_fetch_assoc($res);
if ($time - $res['date'] > 86400) {
$sql = "UPDATE votes SET date='$time'";
$res = mysql_query($sql);
//Выполняем другие действия
} else die ("Вы уже голосовали сегодня");

Возможно ли в данном случае использованиие функции time(), не произойдет ли переполнение в БД, и будет ли это вообще работать :) ?



Спустя 56 минут (23.12.2010 - 21:30) inpost написал(а):
Переполнение чего?

Спустя 14 часов, 50 минут, 31 секунда (24.12.2010 - 12:20) timcess написал(а):
Ну если допустим хранить прошлую дату в числовом виде, не перезойдет ли переполнение в ячейке.

Спустя 2 часа, 22 минуты, 9 секунд (24.12.2010 - 14:43) linker написал(а):
А ты не храни дату в числовом виде, для дат существуют типы полей: DATE, TIME, DATETIME, TIMESTAMP.

Спустя 58 минут, 38 секунд (24.12.2010 - 15:41) timcess написал(а):
Но ведь эти типы не поддерживают формат записи как у функции time()

Спустя 2 минуты, 8 секунд (24.12.2010 - 15:43) SlavaFr написал(а):
1)@linker обсалютно правильно подметил насчет типов.

2)Не люблю давать советы когда люди зарание неправильно делают, но в общем то что ты написал делают гдето так:
UPDATE votes set `date`=unix_timestamp(now()) where (`date`+ 86400)>unix_timestamp(now()) and login='$login'


3)
Цитата (timcess @ 23.12.2010 - 17:34)
Нужно посчитать время между двумя запусками скрипта

A зачем для этого упдате делать?
не проще ли просто только проверять дату перед голосованием и только в случае голосования менять дату на актуальную.

Спустя 3 минуты, 34 секунды (24.12.2010 - 15:47) linker написал(а):
И что, мы не знаем как результат time() преобразовать в нужный формат и обратно? Под unix timestamp есть тип поля TIMESTAMP. Есть еще полезная функция в MySQL - UNIX_TIMESTAMP().
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.