Условия IF и ELSE - помогите пожалуйста

12
goodier
На сайте с 10.03.2009
Offline
36
820

Здравствуйте!

Кто сталкивался с подобной ситуацией?

Пытаюсь составить правильно условия вывода остатка дней до окончания тарифного плана.

И получается что каждое исключение работает одновременно. Как быть?

ВОТ ЧТО Я НАПИСАЛ:

Создаю БД таблицу и записываю в нее время в Unix формате


$day30 = strtotime('+30 days'); // дата через 30 дней
$day5 = strtotime('+25 days'); // 5 дней до окончания тарифа
$day4 = strtotime('+26 days'); // 4 дня до окончания тарифа
$day3 = strtotime('+27 days'); // 3 дня до окончания тарифа
$day2 = strtotime('+28 days'); // 2 дня до окончания тарифа
$day1 = strtotime('+29 days'); // 1 день до окончания тарифа

mysql_query("UPDATE subagent SET plan='$plan' WHERE sub_login='$login'");
$query = "INSERT INTO period_plan SET login='$login', start='$date', day30='$day30', day5='$day5', day4='$day4', day3='$day3', day2='$day2', day1='$day1'";
mysql_query($query) or die (mysql_error());

В файле Head.php который подгружается ко всем страницам, проверяются Условия которые говорят о том что через 5 дней или например через 2 дня истекает действие тарифного плана:


<?PHP
$cccp = mysql_fetch_array( mysql_query( "SELECT * FROM subagent WHERE sub_login='$user'" ) );
$plan = $cccp[plan];

$period_plan = mysql_fetch_array( mysql_query( "select * from period_plan where login='$user'" ) );

$day30= $period_plan['day30'];
$day5 = $period_plan['day5'];
$day4 = $period_plan['day4'];
$day3 = $period_plan['day3'];
$day2 = $period_plan['day2'];
$day1 = $period_plan['day1'];

if ($plan == "yes")
{
if ( $UNIXtime > $day5 ) { $srok = "5 дней"; }
if ( $UNIXtime > $day4 ) { $srok = "4 дня"; }
if ( $UNIXtime > $day3 ) { $srok = "3 дня"; }
if ( $UNIXtime > $day2 ) { $srok = "2 дня"; }
if ( $UNIXtime > $day1 ) { $srok = "1 день"; }
}
?>

До окончания тарифного плана осталось <?=$srok;?>! Свяжитесь с Вашим Агентом.

Как правильно написать условия для вывода дня ?

moonters
На сайте с 09.10.2008
Offline
139
#1

Потому что остальные условия тоже верны.

попробуйте так:

if ( $UNIXtime > $day5 ) { $srok = "5 дней"; }

elseif ( $UNIXtime > $day4 ) { $srok = "4 дня"; }

elseif ( $UNIXtime > $day3 ) { $srok = "3 дня"; }

elseif ( $UNIXtime > $day2 ) { $srok = "2 дня"; }

elseif ( $UNIXtime > $day1 ) { $srok = "1 день"; }

Мобильные прокси беру только тут - https://goo.su/G5nhch
iNd
На сайте с 20.03.2009
Offline
122
iNd
#2

жесть, а не код

goodier
На сайте с 10.03.2009
Offline
36
#3

Без комментариев. iNd

iNd:
жесть, а не код

Все равно не получается правильно написать, считает с первого числа а должен наоборот

SM
На сайте с 25.07.2009
Offline
38
#4

Судя по топикам ТС, возникающих с завидной регулярностью и с проскальзывающей темой о тарифных планах, пишется новый билинг. Не хотел бы я быть клиентом этого сервиса, честно!

ТС курите switch case break; Поможет.

goodier
На сайте с 10.03.2009
Offline
36
#5
SwordsMan:
Судя по топикам ТС, возникающих с завидной регулярностью и с проскальзывающей темой о тарифных планах, пишется новый билинг. Не хотел бы я быть клиентом этого сервиса, честно!

ТС курите switch case break; Поможет.

Спасибо дружище, но я улучшаю свою систему и просто попросил совета у Вас, вот и все.

Кто сталкивался с подобной проблемкой напишите пожалуйста.

SM
На сайте с 25.07.2009
Offline
38
#6
goodier:
Спасибо дружище, но я улучшаю свою систему и просто попросил совета у Вас, вот и все.

Кто сталкивался с подобной проблемкой напишите пожалуйста.

Ну тогда не страшно 😂

Используйте switch

goodier
На сайте с 10.03.2009
Offline
36
#7

хоть пример маленький приведите плиз как этим циклом пользоваться - switch

goodier добавил 29.11.2009 в 23:42

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

SM
На сайте с 25.07.2009
Offline
38
#8
goodier:
хоть пример маленький приведите плиз как этим циклом пользоваться - switch

goodier добавил 29.11.2009 в 23:42
Все разобрался, Всем спасибо!!!🚬

$period_plan = mysql_fetch_array( mysql_query( "select * from period_plan where login='$user'" ) );


$day30= $period_plan['day30'];
$day5 = $period_plan['day5'];
$day4 = $period_plan['day4'];
$day3 = $period_plan['day3'];
$day2 = $period_plan['day2'];
$day1 = $period_plan['day1'];

Вот эту логику мне поясните. У Вас сколько полей в таблице?

iNd
На сайте с 20.03.2009
Offline
122
iNd
#9
SwordsMan:
ТС курите switch case break; Поможет.

да тут проблема не в этом

moonters:
if ( $UNIXtime > $day5 ) { $srok = "5 дней"; }
elseif ( $UNIXtime > $day4 ) { $srok = "4 дня"; }
elseif ( $UNIXtime > $day3 ) { $srok = "3 дня"; }
elseif ( $UNIXtime > $day2 ) { $srok = "2 дня"; }
elseif ( $UNIXtime > $day1 ) { $srok = "1 день"; }

и не в этом

надо просто сувать дату начала тарифного плана и вычитать с даты нынешнего дня. и если результат больше нуля, говорить сколько дней осталось.

goodier
На сайте с 10.03.2009
Offline
36
#10

Вот так работает

if ($plan == "yes")  {

if ($UNIXtime > $day1)
{
$srok = "1 дней";
$warning = "<a href='#' class='hintanchor' onmouseover=\"showhint('ВНИМАНИЕ!!! Через $srok заканчивается срок тарифного плана БЕЗЛИМИТ. Пожалуйста свяжитесь с Вашим Агентом!', this, event, '200px')\"><img src='images/i1.png' style='width:60px;height:60px;' border='0'></a>";
}
elseif ($UNIXtime > $day2)
{
$srok = "2 дня";
$warning = "<a href='#' class='hintanchor' onmouseover=\"showhint('ВНИМАНИЕ!!! Через $srok заканчивается срок тарифного плана БЕЗЛИМИТ. Пожалуйста свяжитесь с Вашим Агентом!', this, event, '200px')\"><img src='images/i1.png' style='width:60px;height:60px;' border='0'></a>";
}
elseif ($UNIXtime > $day3)
{
$srok = "3 дня";
$warning = "<a href='#' class='hintanchor' onmouseover=\"showhint('ВНИМАНИЕ!!! Через $srok заканчивается срок тарифного плана БЕЗЛИМИТ. Пожалуйста свяжитесь с Вашим Агентом!', this, event, '200px')\"><img src='images/i1.png' style='width:60px;height:60px;' border='0'></a>";
}
elseif ($UNIXtime > $day4)
{
$srok = "4 дня";
$warning = "<a href='#' class='hintanchor' onmouseover=\"showhint('ВНИМАНИЕ!!! Через $srok заканчивается срок тарифного плана БЕЗЛИМИТ. Пожалуйста свяжитесь с Вашим Агентом!', this, event, '200px')\"><img src='images/i1.png' style='width:60px;height:60px;' border='0'></a>";
}
elseif ($UNIXtime > $day5)
{
$srok = "5 день";
$warning = "<a href='#' class='hintanchor' onmouseover=\"showhint('ВНИМАНИЕ!!! Через $srok заканчивается срок тарифного плана БЕЗЛИМИТ. Пожалуйста свяжитесь с Вашим Агентом!', this, event, '200px')\"><img src='images/i1.png' style='width:60px;height:60px;' border='0'></a>";
}
}
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий