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

Форум 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 возвращает всегда неверно, если запрашиваю слово (то есть как бы никакой реакции на указанный формат)...