[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнить дату
Uretz
Задача такова, необходимо сравнить даты, допустим на примере оплаты за услуги. Вы провели оплату за услуги 14.04.2009 и в течении месяца индикатор на сайте через который оплатили горит зеленым, пропустили один месяц с оплатой и индикатор на сайте горит желтым, а если пропустили три месяца с оплатой то индикатор красный.
Как составить такую программку, основы PHP понимаю, сначала нужно взять две переменные, одной из них присвоить текущую дату, другой присвоить дату оплаты, затем составить условие сравнения даты (вот с этим и проблемы, я так понимаю что это будет через оператор IF, ELSE работать).
То есть если текущая дата больше, той даты при которой была осуществлена оплата, на один месяц то выводим желтый свет, а если текущая дата больше чем дата оплаты на 3 месяца то выводим красный свет, в противном случае если текущий месяц и месяц оплаты равны то зеленый свет. (тут же необходимо учитывать и год).
Ребята был бы очень признателен если бы смогли помочь и описать (кодом PHP) как будет действовать оператор IF, ELSE в этом случае, и как все будет выглядеть.
Заранее ОГРОМНОЕ СПАСИБО



Спустя 15 минут, 48 секунд (30.07.2009 - 14:36) olgatcpip написал(а):
PHP
$month 4;
$day 14;
$year 2009;

$today  mktime(000date("m")  , date("d"), date("Y"));
$date3 mktime(000$month+3  $day$year);
$date1 mktime(000$month+1  $day$year);
if(
$today $date3$color='red';
elseif(
$today $date1$color='yellow';
else 
$color='green';


Спустя 5 минут, 12 секунд (30.07.2009 - 14:41) Uretz написал(а):
СПАСИБО olgatcpip
Для вывода на экран того или иного цвета необходимо вписать
echo "$color";
Я правильно понял?olgatcpip

Спустя 7 минут, 24 секунды (30.07.2009 - 14:48) jetistyum написал(а):
Дату регистрации ты, предположим хранишь в базе данных.
Далее функциями же самой бд ты можешь вычислить сколько времени прошло, и прошло ли более месяца, двух, трех..
если месяц это строго 30 дней (календарных) ... то тебе можно использовать функцию datediff
если делать четкую привязку к календарному месяцу (декабрь - 31 день, январь - 30, февраль 28) то поможет такой прием
SQL
SELECT DATE_SUB(NOW(), INTERVAL 2 month) > `registration_date`;

таким запросом ты узнаешь, прошло ли более 2 мес...

Спустя 31 секунда (30.07.2009 - 14:49) S{oRpiO написал(а):
echo "$color";

тете выведет слова red yllow или green а для рисунка просто в коде измени или тамже пропиши адреса на нужные рисунки с нужным цветом

Спустя 3 минуты, 38 секунд (30.07.2009 - 14:52) jetistyum написал(а):
olgatcpip
а вот для создания текущей даты совсем не нужно параметров для mktime()

Спустя 12 минут, 29 секунд (30.07.2009 - 15:05) Uretz написал(а):
jetistyum
SELECT DATE_SUB(NOW(), INTERVAL 2 month) > `registration_date`;
Это будет выводится сравнение по дате регистрации, а мне нужно чтобы было так как бы прошла оплата за такую то дату соответственно и сравнивать с этой датой когда была выполнена оплата, и можно ли как то это провести не используя БД?

S{oRpiO
Да я это понял, я думаю тут проблем у меня не возникнет, спасибо за замечание.

Спустя 27 минут, 49 секунд (30.07.2009 - 15:33) jetistyum написал(а):
ну блин, я же твоих баз данных не знаю smile.gif включи моск и подставь вместо registration_date - поле в таблице, в котором у тебя записана дата оплаты...

Спустя 26 минут, 37 секунд (30.07.2009 - 15:59) Uretz написал(а):
Прастите это я не правильно понял сначала

Спустя 2 часа, 14 минут, 46 секунд (30.07.2009 - 18:14) olgatcpip написал(а):
Uretz, я пример написала как сравнить, а эхо ты будешь делать или что-то там другое, твоё дело.

Спустя 1 минута, 48 секунд (30.07.2009 - 18:16) olgatcpip написал(а):
jetistyum, запамятовала, то ли date() для этого (dvtcnj mktime) написал бы ещё функцию, которой проще взять дату в той форме, что для примера нужно biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.