Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сравнение текущего времени с указанным 
V
    Опции темы
Risyaalex
Дата 22.9.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



Есть скипт, который должен запускаться в определенное время каждый день (это время может меняться, оно хранится в базе данных в формате чч:мм:сс)
Для запуска скипта я хочу использовать cron, который будет раз в минуту запускаться и должен сравнивать время текущее с временем указанным в базе.
У меня не получается корректно составить условие, т.е как правильно сравнить время в данном случае?

Код

$result = mysql_query ("SELECT yes,time FROM lot_new");
$arr = mysql_fetch_array ($result);
$arr['time']) = время запуска скипта;
if (время запуска скипта<=настоящего времени){

}
else echo "Еще не время...";


Заранее спасибо)
PM MAIL ICQ   Вверх
DeamonShan
Дата 22.9.2010, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



время можно сравнивать напрямую, то есть в том формате, в котором записан.

Код

$time1="12:15:48";
$time2="12:19:48";


тогда условие 
Код

$time1>=$time2


вернет false;

главное с лева и справа были одинаковый формат времени...

Можно попробовать сравнить в секундах, преобразовав в секунды времена.

Это сообщение отредактировал(а) DeamonShan - 22.9.2010, 13:38
PM MAIL   Вверх
Sanchezzz
Дата 22.9.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



DeamonShan,  а в int то хранить удобнее будет.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Risyaalex
Дата 22.9.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



Цитата(DeamonShan @ 22.9.2010,  13:37)
время можно сравнивать напрямую, то есть в том формате, в котором записан.

Код

$time1="12:15:48";
$time2="12:19:48";


тогда условие 
Код

$time1>=$time2


вернет false;

главное с лева и справа были одинаковый формат времени...

Можно попробовать сравнить в секундах, преобразовав в секунды времена.

а как текущее время в таком формате вывести? или вытянуть из бд в другом формате? я теоретически понимаю что формат должен быть одинаковым, а вот практически..)
PM MAIL ICQ   Вверх
DeamonShan
Дата 22.9.2010, 15:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



Sanchezzz, ну тс сказал что формат чч:мм:сс)))


Risyaalex
Текущее время:

Код

$time_now=date("H:i:s", time());


формат "H:i:s" надо тоже побирать, потому что время у вас может быть либо 12 часовым, либо 24 часовы, соответвественно H надо заменить на G, если 24 часовой формат времени.

Это сообщение отредактировал(а) DeamonShan - 22.9.2010, 15:42
PM MAIL   Вверх
evilice
Дата 22.9.2010, 15:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 27.11.2008

Репутация: нет
Всего: нет



Я думаю Вашу проблему можно решить как-то так:
Код

$query = "SELECT IF(DATE_FORMAT(NOW(), '%H:%i:%s') = t.time, 1, 0) AS res, t.yes FROM lot_new t";
$result = mysql_query ($query);
$res = mysql_fetch_object($result)->res;

if ($res == 1){
    
} else echo "Еще не время...";


Добавлено через 5 минут
К стати!
Есть ещё один вариант, на случай если плохо знаете SQL

Код

$result = mysql_query ("SELECT t.time, t.yes FROM lot_new t");
$time = mysql_fetch_object($result)->time;

if ($time == date("H:i:s", time())){
    //--- какой-то скрипт
} else echo "Еще не время...";

PM MAIL   Вверх
Risyaalex
Дата 22.9.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



спасибо, сейчас буду пробовать)))

Добавлено @ 16:22
Код
$result = mysql_query ("SELECT t.time, t.yes FROM lot_new t");
$time = mysql_fetch_object($result)->time;

if ($time == date("H:i:s", time())){
    //--- какой-то скрипт
} else echo "Еще не время...";


вот этот вариант подошел только $time == date поменяла на $time <= date иначе не хотел работать (все равно у меня скрипт отрабатывает только один раз, до смены данных)

спасибо большое)

Это сообщение отредактировал(а) Risyaalex - 22.9.2010, 16:23
PM MAIL ICQ   Вверх
Muerto
Дата 22.9.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Никогда и не за что не сравнивайте 12:13<13:45 и тп, это вам не помидоры считать!
Бед не наберетесь  smile 

Это сообщение отредактировал(а) Muerto - 22.9.2010, 17:41


--------------------
user posted image
PM MAIL   Вверх
IgorIV
Дата 22.9.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Цитата(Muerto @  22.9.2010,  18:41 Найти цитируемый пост)
это вам не помидоры считать!

Это ты на что намекаешь?

PM MAIL   Вверх
evilice
Дата 22.9.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 27.11.2008

Репутация: нет
Всего: нет



Muerto прав!!!
В моём примере идёт сравнивание строк! Если Вам, Risyaalex, нужно сравнить на больше/меньше, то результат, возвращаемый из БД, нужно преобразовать к Date или int.
PM MAIL   Вверх
IgorIV
Дата 22.9.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Секунды проверять нет смысла. Крон включается раз в минуту. А если система загружена, то скрипт может отработать и в 2, и в 5 секунд.
PM MAIL   Вверх
evilice
Дата 22.9.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 27.11.2008

Репутация: нет
Всего: нет



Абсолютно согласен!
Если проверка будет проходить 1 раз в минуту, то из проверки достаточно убрать секунды и тогда не надо будет преобразовывать к другим форматам, а просто сравнивать как строку
PM MAIL   Вверх
Muerto
Дата 22.9.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



У меня лично такие сравнения не работали корректно... поэтому и не советую...
Стоит построить цикл от 00:00 до 24:00 и сравнивать , я уверен что все станет понятно...

Это сообщение отредактировал(а) Muerto - 22.9.2010, 21:30


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1103 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.