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

Форум PHP

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

 

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

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

тема: Сравнение даты с текущей
 
 автор: t3ma   (16.06.2008 в 17:03)   письмо автору
 
 

Ребят помогите реализовать следующее:

- Если дата окончания договора <= сегодняшней или отсутствует необходимо вывести текст «Возможно заключение договора»
- Если дата окончания договора, > чем сегодняшняя тогда выводим следующую надпись Возможно заключение договора с ДАТА.

Поля в БД:
дата окончания договора - putdate (в формате 2008-06-16 23:39:00)

   
 
 автор: BinLaden   (16.06.2008 в 17:57)   письмо автору
 
   для: t3ma   (16.06.2008 в 17:03)
 

<?php 

$putdate 
'2008-06-16 23:39:00'# Дата из таблицы

if( $putdate <= date('Y-m-d H:i:s') )
{
    echo 
'Возможно заключение договора';
}
else
{
    
# Возможно заключение договора с ДАТА ...
}
?>


[поправлено модератором]

   
 
 автор: t3ma   (21.06.2008 в 07:07)   письмо автору
 
   для: BinLaden   (16.06.2008 в 17:57)
 

Спасибо большое, а если дата в таком формате 31.12.2008 ?

<?php  
$putdate 
'31.12.2008'# Дата из таблицы 
if( $putdate <= date('Y-m-d') ) 

    echo 
'Возможно заключение договора'

else 

    
# Возможно заключение договора с ДАТА ... 

?>


правильно ? ))

   
 
 автор: sim5   (21.06.2008 в 07:21)   письмо автору
 
   для: t3ma   (21.06.2008 в 07:07)
 

Нет, не правильно. Тогда получать текущую дату нужно так:

<?
$putdate 
'31.12.2008'# Дата из таблицы  
if( $putdate <= date('d.m.Y') )  
{  
    echo 
'Возможно заключение договора';  
}  else  

Плюс учитывать, что m - возвращает месяц с ведущии нулями, и если он в источнике будет записан без них, то нужно указывать параметр для месяца как - n. Собственно, это же может касаться и формата вывода дней. Ознакомьтесь с функцией date().

   
 
 автор: Trianon   (21.06.2008 в 12:01)   письмо автору
 
   для: t3ma   (21.06.2008 в 07:07)
 

>Спасибо большое, а если дата в таком формате 31.12.2008 ?

а если в таком формате, то сравнить её будет невозможно. Поскольку младшие разряды окажутся впереди старших.

to sim5: :-(

   
 
 автор: Zend72   (21.06.2008 в 12:10)   письмо автору
 
   для: Trianon   (21.06.2008 в 12:01)
 


<?php
  $putdate 
'21.6.2008'# Дата из таблицы   
  
if( $putdate <= date('d.n.Y') )   
  {   
    echo 
'Возможно заключение договора';   
  }
  else 
  {
    echo 
'Невозможно заключение договора';
  }
?>

А почему работает?

   
 
 автор: Trianon   (21.06.2008 в 12:24)   письмо автору
 
   для: Zend72   (21.06.2008 в 12:10)
 

$putdate = '3.6.2008'; # Дата из таблицы
if( $putdate <= date('d.n.Y') )

$putdate = '22.5.2008'; # Дата из таблицы
if( $putdate <= date('d.n.Y') )

$putdate = '21.10.2008'; # Дата из таблицы
if( $putdate <= date('d.n.Y') )

Потому что не работает.
Теперь, блин, надеюсь примеров достаточно?!

   
 
 автор: Zend72   (21.06.2008 в 12:31)   письмо автору
 
   для: Trianon   (21.06.2008 в 12:24)
 

Да

   
 
 автор: t3ma   (21.06.2008 в 12:59)   письмо автору
 
   для: Trianon   (21.06.2008 в 12:01)
 

  <?php $query "SELECT id,
                   code,
                   area,
                   DATE_FORMAT(putdate,'%d.%m.%Y') as putdate_format,
                   floor,
                   cost,
                   url_pict,
                   hide
            FROM news
            WHERE hide='show' AND code=
$variable
            ORDER BY code DESC 
            LIMIT 
$begin$all_number_news";
  
$new mysql_query($query);
  if (
$new)
  {
      while(
$news mysql_fetch_array($new))
    {
    
      
// Если дата заключения договора <= текущей то выводим надпись "Возможно заключение договора"
      // если > текущей то выводим надпись "Возможно заключение договора с {дата}"
      
$putdate "".$news['putdate'].""
      if( 
$putdate <= date('Y-m-d H:i:s') ) { 
      
$date "Возможно заключение договора"
      } 
      else { 
      
$date "Возможно заключение договора с ".$news['putdate_format'].""
      } 
?>


Почему то неправильно работает.. не могу найти ошибку

В позиции стоит дата освобождения договора 2008-12-20 22:28:00 и показывает что Возможно заключение договора
и во второй позиции стоит дата освобождения договора 2008-12-31 17:37:00 и показывает что Возможно заключение договора с 31.12.2008
т.е. почему-то месяц не учитывает, только число, помогите разобраться в чем дело

   
 
 автор: BinLaden   (21.06.2008 в 13:29)   письмо автору
 
   для: t3ma   (21.06.2008 в 12:59)
 

Откуда Вы берете $news['putdate']? Что-то я не вижу в запросе ничего подобного.

   
 
 автор: t3ma   (21.06.2008 в 15:59)   письмо автору
 
   для: BinLaden   (21.06.2008 в 13:29)
 

Всем спасибо, я разобрался

   
 
 автор: sim5   (21.06.2008 в 14:20)   письмо автору
 
   для: Trianon   (21.06.2008 в 12:01)
 

Trianon, логично. Тогда мне надо выбрасывать свой сервер:

<?
$date 
'21.6.2008';
echo 
$date <= date('d.n.Y') ? "<=" ">";

Работатет.

   
 
 автор: BinLaden   (21.06.2008 в 14:39)   письмо автору
 
   для: sim5   (21.06.2008 в 14:20)
 

> Работатет

Вы шутите? Со следующего месяца не будет работать.

   
 
 автор: sim5   (21.06.2008 в 14:49)   письмо автору
5 Кб
 
   для: BinLaden   (21.06.2008 в 14:39)
 

Какие шутки, я уже никотина принял для успокоения. Вот картинкой от шопа, но не рисованное в нем. Ответ выдает правильный?

   
 
 автор: Trianon   (21.06.2008 в 15:44)   письмо автору
 
   для: sim5   (21.06.2008 в 14:49)
 

Ну что Вы ерничаете, право слово? Не смешно уже. Я не верю, что Вы не знаете правила сравнения строк в php.
Картинки к примерам (21.06.2008 в 12:24) мне делать лень.

   
 
 автор: sim5   (21.06.2008 в 15:54)   письмо автору
 
   для: Trianon   (21.06.2008 в 15:44)
 

Я не про правило, я о том, что моему локальному серверу получается они по барабану. Я уже перключал системный календарь - РНР-редактор предлагает сразу обновить файл, кашмарский в тровоге, а сравнение строк работает.
Если често, то я в легкой панике. У меня уже есть одна проблема, которую я так и не могу решить - загрузка только 5 файлов, причем только первых пяти полей формы, остальное просто не копируется из папки tmp. Теперь получается добавилась еще, и наверное есть и другие, о которых я даже могу и не подозревать.

   
 
 автор: BinLaden   (21.06.2008 в 17:08)   письмо автору
 
   для: sim5   (21.06.2008 в 15:54)
 

sim5, я ничего не понял абсолютно. Что у Вас конкретно вызывает удивление? Тот результат, что у Вас в аттачменте? Ничего удивительного не вижу: сегодня 21-ое число и там стоит 21-ое - значит это равные участки строки, далее идёт сравнение "6" и "7". Условие "7" <= "6" не выполняется и на этом всё заканчивается.

   
 
 автор: sim5   (21.06.2008 в 17:56)   письмо автору
 
   для: BinLaden   (21.06.2008 в 17:08)
 

Вы думаете я не догадался перключать календарь, менять даты. Единственный правильный момент у меня возникает тогда, когда я сменю в формате даты, например, n на m (ну и представление месяца в строке) - все ОК, но только в этот момент, стоит изменить, например, число в строке - опять никакой логики тогда.

   
 
 автор: BinLaden   (21.06.2008 в 18:40)   письмо автору
 
   для: sim5   (21.06.2008 в 17:56)
 

К сожалению, не увидел ответа - что у Вас конкретно вызывает удивление?

> Вы думаете я не догадался перключать календарь, менять даты

Я, например, до такого бы не догадался, а заменил бы date('d.m.Y') на обычную литеральную константу...

   
 
 автор: sim5   (22.06.2008 в 07:51)   письмо автору
 
   для: BinLaden   (21.06.2008 в 18:40)
 

А вот я догадался и вносить изменения, и системное время менять.) В общем точно, не работает у меня сравнение как положено, просто строк. Неожиданные результаты могу получать при преобразованиях. Unpack возвращает всегда неверно, если запрашиваю слово (то есть как бы никакой реакции на указанный формат)...

   
Rambler's Top100
вверх

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