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 :: if else проблема

 PHP.SU

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


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

> Без описания
Langolier55
Отправлено: 24 Ноября, 2013 - 02:37:44
Post Id


Новичок


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


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




Добрый день!
Не уверен, что вопрос свой размещаю в нужной рубрике. Если вдруг не там где надо, огромная просьба к модератору не удалять тему, а перенести куда положено.

итак.. есть задача рассчитать стоимость материала для изготовления единицы изделия.

есть постоянные величины:
Цена
Высота
Ширина стандарт
min
max

есть переменная (вводится пользователем)
Ширина пользователя

есть требуемый результат (рассчитывается автоматически)
Стоимость

есть условие: ЕСЛИ Ширина пользователя меньше или равна значению min, ТО Стоимость=Цена*Высоту; ЕСЛИ Ширина пользователя есть величина между min и max, ТО Стоимость=(Цена*Высота)*2

в Excel требуемый результат рассчитывается по формуле: =ЕСЛИ(И(C11>B8;C11<C8);A4*B4*2;A4*B4) (см. вложенный файл)

теперь сама проблема (то ли лошадь сдохла, то ли ноги не ходят): не могу понять как выражение из Excel прописать в php. Подскажите пожалуйста, самостоятельно сижу вторую ночь и не понимаю...
Скачать файл: формула для калькулятора.xls
Скачан раз: 36
 
 Top
JustJazz
Отправлено: 24 Ноября, 2013 - 02:44:50
Post Id


Новичок


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


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




У Вас проблема с самой конструкцией (условием)? Или Вы не знаете откуда взять данные для проверки условия?
 
 Top
Langolier55
Отправлено: 24 Ноября, 2013 - 02:53:35
Post Id


Новичок


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


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




JustJazz пишет:
У Вас проблема с самой конструкцией (условием)? Или Вы не знаете откуда взять данные для проверки условия?


проблема с самой конструкцией...

откуда что взять знаю... но вот как сконструировать чтобы было правильно не пойму...

сейчас у меня немного по другому прописано:

//расход ткани
if ($w <=260) {
$rashFaktur = ($h + pripLow + pripHigh) ;
}else{
$rashFaktur = ($h + pripLow + pripHigh) * 2 ;
}


вот как раз в этой пакости - if ($w <=260) и проблема...

(Отредактировано автором: 24 Ноября, 2013 - 03:03:36)

 
 Top
IllusionMH
Отправлено: 24 Ноября, 2013 - 04:33:16
Post Id



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


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


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




Langolier55, у вас 2 условия которые должны выполнятся одновременно. Значит их нужно объединить логическим И (and или &&). Сами логические выражения уже есть в экселе
 
 Top
Langolier55
Отправлено: 24 Ноября, 2013 - 12:05:03
Post Id


Новичок


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


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




oxo-xo-юшки... так в том и проблема для меня (к слову сказать я не программист)...
я читал и о and и о && но толком ничего так и не понял... Но, если Вы говорите что их нужно объединить, при том, что сами выражения уже есть в Excel, правильный ли будет синтаксис:

if (($w_fb > $w and w_fb < $w * 2) {
$rashFaktur = (($h + pripLow + pripHigh) $prcFbr) * 2;
$rashFaktur = ($h + pripLow + pripHigh) * $prcFbr;
}

где
$w - ширина стандарт
$w_fb - ширина пользователя
($h + pripLow + pripHigh) - выражение определяющее величину высота
$prcFbr - цена
$rashFaktur - стоимость

только, если что ниже пейджера не бейте...

(Отредактировано автором: 24 Ноября, 2013 - 12:59:16)

 
 Top
IllusionMH
Отправлено: 24 Ноября, 2013 - 14:54:26
Post Id



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


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


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




Langolier55, близко.
PHP:
скопировать код в буфер обмена
  1. if(0<$w && $w <= $min) {
  2.   $rashFaktur = ($h + pripLow + pripHigh) * $prcFbr;
  3. } elseif($min < $w && $w < $max) {
  4.  $rashFaktur = (($h + pripLow + pripHigh) * $prcFbr) * 2;
  5. } else {
  6.   echo 'Не в диапазоне';
  7. }

Подозреваю что примерно так
 
 Top
Langolier55
Отправлено: 25 Ноября, 2013 - 11:37:49
Post Id


Новичок


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


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




IllusionMH пишет:
Langolier55, близко.
PHP:
скопировать код в буфер обмена
  1. if(0<$w && $w <= $min) {
  2.   $rashFaktur = ($h + pripLow + pripHigh) * $prcFbr;
  3. } elseif($min < $w && $w < $max) {
  4.  $rashFaktur = (($h + pripLow + pripHigh) * $prcFbr) * 2;
  5. } else {
  6.   echo 'Не в диапазоне';
  7. }

Подозреваю что примерно так


День добрый! Огроменное спасибо за наводку! Это просто... просто потрясающая помощь... не ожидал, её получить на самом деле... Я сделал, как Вы описали, с поправкой на "ветер"... вот что у меня получилось в конечном виде:

PHP:
скопировать код в буфер обмена
  1. function calc($w, $h, $ksPp, $prcFaktur, $prcPp, $prcPodkl, $w_fb) {
  2.         define("pripLow",10,true);  //припуск снизу
  3.         define("pripHigh",10,true); //припуск сверху
  4.         define("pripBw",10,true);
  5.  
  6.         //стоимость работ
  7.         if ($h <= 300) {
  8.                 $prcWork = 3.45 ;      
  9.         }
  10.  
  11.         if ($h > 300) {
  12.                 $prcWork = 4.2 ;       
  13.         }
  14.                
  15.         //расход шторной ленты
  16.         $rashPp = $w * $ksPp ;
  17.        
  18.         //расход ткани
  19.         if (0 <($rashPp + pripBw) && ($rashPp + pripBw) <=$w_fb) {
  20.                 $rashFaktur = ($h + pripLow + pripHigh) ;
  21.         }elseif ($w_fb <($rashPp + pripBw) && ($rashPp + pripBw) <($w_fb * 2)) {
  22.                 $rashFaktur = ($h + pripLow + pripHigh) * 2 ;
  23.         }
  24.  
  25.         //расход подклада
  26.         if ($w <=260) {
  27.                 $rashPodkl = ($h + pripHigh + pripHigh) ;      
  28.         }else{
  29.                 $rashPodkl = ($h + pripHigh + pripHigh) * 2 ;
  30.         }
  31.  
  32.         $summPp = $prcPp * $rashPp ;
  33.         $summFaktur = $rashFaktur * $prcFaktur ;
  34.         $summPodkl = $rashPodkl * $prcPodkl ;
  35.         $summWrk = $w * ($prcWork + $nadbSlogn) ;
  36.         $result = $summPp + $summFaktur + $summPodkl + $summWrk ;              
  37.         return $result ;
  38. }


Однако, видимо где-то я всё же допустил ошибку, так как расход ткани формула не считает... на итоговой странице сайта выводится только стоимость работы

PHP:
скопировать код в буфер обмена
  1. //стоимость работ
  2.         if ($h <= 300) {
  3.                 $prcWork = 3.45 ;      
  4.         }


а вот эту часть, то, в чем Вы мне помогли:

PHP:
скопировать код в буфер обмена
  1. //расход ткани
  2.         if (0 <($rashPp + pripBw) && ($rashPp + pripBw) <=$w_fb) {
  3.                 $rashFaktur = ($h + pripLow + pripHigh) ;
  4.         }elseif ($w_fb <($rashPp + pripBw) && ($rashPp + pripBw) <($w_fb * 2)) {
  5.                 $rashFaktur = ($h + pripLow + pripHigh) * 2 ;
  6.         }


не считает.. где я ошибся. не подскажите?
 
 Top
IllusionMH
Отправлено: 25 Ноября, 2013 - 11:57:31
Post Id



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


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


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




Langolier55, не забыли везде перед названиями переменных ставить $?
 
 Top
Langolier55
Отправлено: 25 Ноября, 2013 - 12:02:00
Post Id


Новичок


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


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




IllusionMH пишет:
Langolier55, не забыли везде перед названиями переменных ставить $?


да вроде нет... грешу только... я ввел на странице материала дополнительное поле Ширина материала ($w_fb), тип поля указал как Номер, и прописал его в условии:

PHP:
скопировать код в буфер обмена
  1. function calc($w, $h, $ksPp, $prcFaktur, $prcPp, $prcPodkl, $w_fb) {
  2.         define("pripLow",10,true);  //припуск снизу
  3.         define("pripHigh",10,true); //припуск сверху
  4.         define("pripBw",10,true);


вполне возможно, что это параметр нужно ещё где-то указать... но тогда где? не знаю...

(Отредактировано автором: 25 Ноября, 2013 - 12:02:31)

 
 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