Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сравнение дат

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alsio
Отправлено: 01 Января, 2014 - 01:09:32
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


В таблицу циклом выводится инфа из БД. Есть поле "дата" (лежит в БД в "русском" формате dd.mm.yy). Надо подсвечивать строки с датой старше 20 дней.

Проблема в том, что сравнивать приходится с датой в "американском" формате yy.mm.dd... Попробовал перевести свою дату в такой формат, но дальше не получается...

PHP:
скопировать код в буфер обмена
  1.  
  2. $alert_date=date("yymmdd",strtotime("-20 day"));
  3. while ($row = mysql_fetch_array($res)) {
  4.   $conv_date1=($row['creatdate']);
  5.   $tmp = explode('.',$conv_date1);
  6.   $day = (int)$tmp[0];
  7.   $month = (int)$tmp[1];
  8.   $year = $tmp[2];
  9.   $conv_date2=$year,$month,$day;
  10.   if($conv_date2<=$alert_date){$bg='#ff9999';}else{$bg='#fff';}?>
  11.   <tr>
  12.     <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["creatdate"]." "); ?></td>
  13.     <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["info"]." "); ?></td>
  14.   </tr>
  15. <? } ?>
  16.  


Ну, во-первых, это понятное дело, не работает. Как правильно?

А во-вторых, здесь цикла то нет. Только по последней строчке будет работать...

Или какие еще есть варианты? Помогайте, плиз... Закатив глазки

(Отредактировано автором: 01 Января, 2014 - 01:10:55)

 
 Top
LIME
Отправлено: 01 Января, 2014 - 01:35:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




alsio пишет:
лежит в БД в "русском" формате dd.mm.yy
гигантская ошибка
просто эпик фэйл
не так давно столкнулся с таким
мой предшественник так хранил дату
да отсохнут его пальцы по самую шею
рецепта не существует
дело в том что выборку невозможно сделать так как бд сравнивает даты строково
я написал скриптик который перевел все эти кривые даты в правильный формат
в дополнительное поле
от кривых рук спасения не придумали еще
либо сам это дело исправляй либо найми более знающего спеца...пойдет и дешевый новичек
еще раз- надо исправлять...в данной ситуации решить проблему невозможно
(Добавление)
вот блин маньяк в НГ ночь спрашивать
 
 Top
alsio
Отправлено: 01 Января, 2014 - 13:08:29
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


LIME пишет:
alsio пишет:
лежит в БД в "русском" формате dd.mm.yy

еще раз- надо исправлять...в данной ситуации решить проблему невозможно


Вот блин! Но что делать, приходится учиться на своих ошибках...

Ну, допустим, я переведу все даты в БД в нужный формат. Вопрос сравнения отпадет. Встанет пара других:
1. как выводить даты в удобоваримом для юзера формате?
2. как вводить даты в БД? У меня используется datepicker и надо, чтобы юзер выбрал русскую дату, а записалась она американской.

(Отредактировано автором: 01 Января, 2014 - 13:09:04)

 
 Top
caballero
Отправлено: 01 Января, 2014 - 14:06:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




даты в Бд хранятся во внутреннем формате и перевести их никуда нельзя

если надо сравнивать формируешь SQL с латоы й в виде yyy-mm-dd и сравниваешь средствами SQL

то же самое для ввода. с датепикера оно и так правилно вставит


а выводить для юзеров функцией date() с нужным форматом


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 01 Января, 2014 - 14:52:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




alsio пишет:
1. как выводить даты в удобоваримом для юзера формате?

Всем, чем угодно. Чистый SQL, штатный класс PHP datetime, вплоть до ручного извращения со всякими explode и прочими извращениями через таймштамп.

alsio пишет:
У меня используется datepicker

См. документацию. Параметр dateFormat.


-----
PostgreSQL DBA
 
 Top
alsio
Отправлено: 01 Января, 2014 - 16:40:51
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Изменил тип полей с датами на DATE. Вывод делаю так:
PHP:
скопировать код в буфер обмена
  1. <td><? $date = date_create($row["orders_creatdate"]); echo date_format($date, 'd.m.y'); ?></td>

Поправьте, если перемудрил.

Теперь вопрос. Если мне не нужно писать в БД никакой даты, она все равно записывается, как 0000-00-00. Соответственно, и выводится ерунда.

Поставил значение по умолчанию NULL. Но при выводе создает текущую дату.

Что делать? Еще проверку на NULL прикрутить к $date или все проще?
(Добавление)
Хотя даже со значением NULL по умолчанию, при пустой записи, пишет 0000-00-00

(Отредактировано автором: 01 Января, 2014 - 16:41:17)

 
 Top
alsio
Отправлено: 02 Января, 2014 - 14:56:03
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


LIME пишет:
еще раз- надо исправлять...в данной ситуации решить проблему невозможно


Возможно. Я решил.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB