|
|
|
| Скрипт прогнозов. Задаются матчи - участники ставят прогнозы (используется MySQL)
Такая проблема. При введении матчей для прогнозов нужно указывать дату начала матча, и, например, за час до начала, доступ к измению прогноза должен закрыватся. Какэто автоматизовать? Мысль приходит одна, запустить страницу через крон, которая будет каждый час запускаться и проверять время.
Какие типы надо использовать, если время матча вводить параметры - год, месяц, день, и точное время. Как считывать и как проверять условие наступления даты - за час до начала.
Есть ли другиеварианты? | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 12:40)
| | не изобретать велосипед и использовать TIMESTAMP
Никакого крона здесь не надо.
Нужен административный вход, которым можно было бы указать реальное время начала матча, когда оно окончательно определится. | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2007 в 13:07)
| | А как использовать TIMESTAMP? Я просто на эту тему особо ничего незнаю... | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 13:46)
| | это время, выраженное в секундах.
функции php date(), time() , mktime() оперируют именно им.
его можно сравнивать. К нему можно прибавлять и отнимать интервалы. | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2007 в 13:50)
| | Как я понимаю, при вводе надо приобразовывать в секунды и вводить в базу данных, а как проверять сейчашних кол-ва секунд с записанным в базе? | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2007 в 13:50)
| | Кое в чем разобрался, а как преобразовать дату 2007-03-06-23-11-05 в секунды (time) ? | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 14:43)
| | Разбейте строку функцией explode() и запихайте полученные числа в mktime() | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 14:43)
| | Если Вы эту дату из базы берете - берите сразу число.
SELECT UNIX_TIMESTAMP(dt) FROM tab WHERE...
Обратное преобразование
UPDATE tab SET dt = FROM_UNIXTIME($num) WHERE.... | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2007 в 15:05)
| | Да, из базы данных, а как тогда теперь преобразовать эти числа с помощью mktime
Мне выводит ошибку Notice: Undefined index: time in z:\home\site\www\prognoz.php on line 84
* time - оттуда беру дату | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 15:20)
| | поставьте алиас, например unixtime : SELECT UNIX_TIMESTAMP(`time`) AS unixtime ...
и обращайтесь к элементу по ключу алиаса echo $row['unixtime'] | |
|
|
|
|
|
|
|
для: Trianon
(14.06.2007 в 15:37)
| | Вроде работает. Пользователь заходит на страницу и если время матча не наступило, то менять можно - это комментарий к скрипту. Предварительно в базе данных поменял тип поля timestamp на datetime.
$query="SELECT UNIX_TIMESTAMP(time)AS unixtime FROM matchs_prognoz WHERE id_mp=1";
$ath = mysql_query($query, $link);
$matchs = mysql_fetch_array($ath);
$tn=$matchs['unixtime'];
$ts=time();
if ($tn==$ts||$tn>$ts)
{
print "Можно менять";
}
else
{
print "Нельзя менять";
}
|
Но чую я, что что-то не то...
К тому же, вы не могли сказать как работает TIMESTAMP,ведь оно записывает то время, в которое был сделан запрос, и как это можно применить к матчу.. Ведь мне нужно в базе указывать время матча, и если оно не настоло, то разрешить доступ... а как к этому подходит timestamp - я непонял... | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 16:09)
| | >, вы не могли сказать как работает TIMESTAMP,ведь оно записывает то время, в которое был сделан запрос
если Вы про то, что поле с таким типов само устанавливается в текущее время, и это нехорошо - поменяйте тип в таблице на DATETIME . внешняя семантика у них одинаковая, а ставить его силой Вам никто не будет.
Собственно, можно и у timestamp отключить эту фичу.... | |
|
|
|
|
|
|
|
для: Sergeous
(14.06.2007 в 15:20)
| | -- | |
|
|
|