Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт проверки времени
 
 автор: Sergeous   (14.06.2007 в 12:40)   письмо автору
 
 

Скрипт прогнозов. Задаются матчи - участники ставят прогнозы (используется MySQL)

Такая проблема. При введении матчей для прогнозов нужно указывать дату начала матча, и, например, за час до начала, доступ к измению прогноза должен закрыватся. Какэто автоматизовать? Мысль приходит одна, запустить страницу через крон, которая будет каждый час запускаться и проверять время.

Какие типы надо использовать, если время матча вводить параметры - год, месяц, день, и точное время. Как считывать и как проверять условие наступления даты - за час до начала.

Есть ли другиеварианты?

   
 
 автор: Trianon   (14.06.2007 в 13:07)   письмо автору
 
   для: Sergeous   (14.06.2007 в 12:40)
 

не изобретать велосипед и использовать TIMESTAMP
Никакого крона здесь не надо.
Нужен административный вход, которым можно было бы указать реальное время начала матча, когда оно окончательно определится.

   
 
 автор: Sergeous   (14.06.2007 в 13:46)   письмо автору
 
   для: Trianon   (14.06.2007 в 13:07)
 

А как использовать TIMESTAMP? Я просто на эту тему особо ничего незнаю...

   
 
 автор: Trianon   (14.06.2007 в 13:50)   письмо автору
 
   для: Sergeous   (14.06.2007 в 13:46)
 

это время, выраженное в секундах.
функции php date(), time() , mktime() оперируют именно им.
его можно сравнивать. К нему можно прибавлять и отнимать интервалы.

   
 
 автор: Sergeous   (14.06.2007 в 13:53)   письмо автору
 
   для: Trianon   (14.06.2007 в 13:50)
 

Как я понимаю, при вводе надо приобразовывать в секунды и вводить в базу данных, а как проверять сейчашних кол-ва секунд с записанным в базе?

   
 
 автор: Sergeous   (14.06.2007 в 14:43)   письмо автору
 
   для: Trianon   (14.06.2007 в 13:50)
 

Кое в чем разобрался, а как преобразовать дату 2007-03-06-23-11-05 в секунды (time) ?

   
 
 автор: kasmanaft   (14.06.2007 в 15:02)   письмо автору
 
   для: Sergeous   (14.06.2007 в 14:43)
 

Разбейте строку функцией explode() и запихайте полученные числа в mktime()

   
 
 автор: Trianon   (14.06.2007 в 15:05)   письмо автору
 
   для: Sergeous   (14.06.2007 в 14:43)
 

Если Вы эту дату из базы берете - берите сразу число.
SELECT UNIX_TIMESTAMP(dt) FROM tab WHERE...
Обратное преобразование
UPDATE tab SET dt = FROM_UNIXTIME($num) WHERE....

   
 
 автор: Sergeous   (14.06.2007 в 15:20)   письмо автору
 
   для: Trianon   (14.06.2007 в 15:05)
 

Да, из базы данных, а как тогда теперь преобразовать эти числа с помощью mktime
Мне выводит ошибку Notice: Undefined index: time in z:\home\site\www\prognoz.php on line 84

* time - оттуда беру дату

   
 
 автор: Trianon   (14.06.2007 в 15:37)   письмо автору
 
   для: Sergeous   (14.06.2007 в 15:20)
 

поставьте алиас, например unixtime : SELECT UNIX_TIMESTAMP(`time`) AS unixtime ...
и обращайтесь к элементу по ключу алиаса echo $row['unixtime']

   
 
 автор: Sergeous   (14.06.2007 в 16:09)   письмо автору
 
   для: 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 - я непонял...

   
 
 автор: Trianon   (14.06.2007 в 18:04)   письмо автору
 
   для: Sergeous   (14.06.2007 в 16:09)
 

>, вы не могли сказать как работает TIMESTAMP,ведь оно записывает то время, в которое был сделан запрос

если Вы про то, что поле с таким типов само устанавливается в текущее время, и это нехорошо - поменяйте тип в таблице на DATETIME . внешняя семантика у них одинаковая, а ставить его силой Вам никто не будет.

Собственно, можно и у timestamp отключить эту фичу....

   
 
 автор: Sergeous   (14.06.2007 в 17:54)   письмо автору
 
   для: Sergeous   (14.06.2007 в 15:20)
 

--

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования