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
Форумы портала PHP.SU :: Версия для печати :: Калькулятор Длина x Высоту = цена за 1дм2
Форумы портала PHP.SU » » Вопросы новичков » Калькулятор Длина x Высоту = цена за 1дм2

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

1. mirstiker - 09 Апреля, 2015 - 21:33:31 - перейти к сообщению
Здравствуйте,помогите новичку формулу реализовать оч.надо.Есть только форма на html
Помогите,пожалуйста, с решением.
CODE (html):
скопировать код в буфер обмена
  1. <HTML>
  2.             <head>
  3.              <meta charset="utf-8"/>
  4.                     <title>Калькулятор</title>
  5.                  </head>
  6.             <body>
  7.                         <p>Рассчитать стоимость: </p>
  8.                     <form method="post" action="calcul.php"/>
  9.                          <input type="text" size="15" maxlength="5" placeholder="Ширина (см)"> X <input type="text" size="15" maxlength="5" placeholder="Высота (см)" > = <input type="text" size="4" value="цена" />
  10.                                  <p>
  11.                                  <input type="submit" value="Рассчитать"/>
  12.                                  </p>
  13.                        
  14.                        
  15.                 </body>
  16.         </HTML>
2. exlant - 10 Апреля, 2015 - 00:54:26 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.     class sum{
  4.         private $width = 'width';
  5.         private $height = 'height';
  6.         public $error = NULL;
  7.         private $errors = array('not_valid_data'=>'Введены неверные данные!');
  8.         public $sum = NULL;
  9.  
  10.         function __construct(){
  11.             if($_SERVER["REQUEST_METHOD"] == 'POST'){
  12.                 $w = $this->get($this->width);
  13.                 $h = $this->get($this->height);
  14.                 if(!$this->error){
  15.                    $this->sum = $this->summarize($w, $h);
  16.                 }
  17.             }
  18.         }
  19.         private function get($var){
  20.             return ($this->validator($var)) ? $this->validator($var) : FALSE;
  21.         }
  22.         private function validator($var){
  23.             $val = filter_input(INPUT_POST, $var,FILTER_VALIDATE_INT);
  24.             if($val){
  25.                 $len = (int)log10($val)+1;
  26.                 if($len > 0 AND $len <= 5){
  27.                     return $val;
  28.                 }
  29.             }
  30.             $this->error = $this->errors['not_valid_data'];
  31.             return FALSE;
  32.         }
  33.         private function summarize($w,$h){
  34.             return $w*$h;
  35.         }
  36.  
  37.     }
  38.         $sum = new sum();
  39.  
  40.     ?>
  41.    <form method="post" action="">
  42.         <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)" />
  43.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)" />
  44.         = <input type="text" size="4" value="<?=($sum->sum) ? $sum->sum : 'Цена'; ?>" />
  45.                                  <p>
  46.         <input type="submit" value="Рассчитать" />
  47.         <?=($sum->error) ? '<br>'.$sum->error : ''; ?>
  48.     </p>
  49.    </form>
  50.  

(Добавление)
можно еще на JS
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.     function setEventListener(element,event,hundler){
  4.         try{
  5.             element.addEventListener(event,hundler,false);
  6.         }catch(a){
  7.             element.attachEvent("on"+event,hundler);
  8.         }
  9.     };
  10.     function cansel(e) {                
  11.             try{                                    
  12.                 e.preventDefault();
  13.             }catch(a){
  14.                 e.returnValue = false;
  15.             }
  16.         };
  17.     setEventListener(window,"load",sum);
  18.     function sum(){
  19.         var form = document.forms.form_sum;
  20.         setEventListener(form,"submit",multipl);
  21.        
  22.         function multipl(e){
  23.             var w = parseInt(form.width.value);
  24.             var h = parseInt(form.height.value);
  25.             if(!isNaN(w) & !isNaN(h))
  26.                 form.sum.value = w*h;
  27.             cansel(e);
  28.         }
  29.     }
  30.    </script>
  31.  

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form name="form_sum" method="post" action="">
  3.         <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)" />
  4.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)" />
  5.         = <input type="text" name="sum" size="4" value="Цена" />
  6.                                  <p>
  7.         <input type="submit" value="Рассчитать" />
  8. </p>
  9.    </form>
  10.  
3. Alex_dark74 - 10 Апреля, 2015 - 10:17:38 - перейти к сообщению
Думаешь для новичка подойдет? Радость
4. exlant - 10 Апреля, 2015 - 14:46:43 - перейти к сообщению
Так я ж в прикол, от нечего делать....

А вообще пусть новички думают, что php - это что то сложное и непостижимое Радость

Конечно ООП подход лучше, но задачу можно решить и в одну строчку

CODE (htmlphp):
скопировать код в буфер обмена
  1. <form name="form_sum" method="post" action="">
  2.         <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)" />
  3.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)" />
  4.         = <input type="text" name="sum" size="4"
  5.                 value="<?=(isset($_POST['width']) AND isset($_POST['height']))?(int)$_POST['width']*(int)$_POST['height']:'Цена'?>" />
  6.                                  <p>
  7.         <input type="submit" value="Рассчитать" />
  8. </p>
  9.    </form>
5. Tyoma5891 - 10 Апреля, 2015 - 15:30:15 - перейти к сообщению
exlant пишет:
Так я ж в прикол, от нечего делать....

А вообще пусть новички думают, что php - это что то сложное и непостижимое Радость


тогда уже можно было и аяксом сделать... Улыбка
6. exlant - 10 Апреля, 2015 - 17:11:11 - перейти к сообщению
Tyoma5891 Задача и так выполнена! ТС испугался сложности, и может быть закинет все это дело с программированием, и больше не будет задавать таких вопросов Подмигивание
7. mirstiker - 11 Апреля, 2015 - 00:24:28 - перейти к сообщению
exlant пишет:
Так я ж в прикол, от нечего делать....

А вообще пусть новички думают, что php - это что то сложное и непостижимое Радость

Конечно ООП подход лучше, но задачу можно решить и в одну строчку

CODE (htmlphp):
скопировать код в буфер обмена
  1. <form name="form_sum" method="post" action="">
  2.         <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)" />
  3.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)" />
  4.         = <input type="text" name="sum" size="4"
  5.                 value="<?=(isset($_POST['width']) AND isset($_POST['height']))?(int)$_POST['width']*(int)$_POST['height']:'Цена'?>" />
  6.                                  <p>
  7.         <input type="submit" value="Рассчитать" />
  8. </p>
  9.    </form>


Спасибо за решение оно на мой взгляд предпочтительней,подскажите как увеличивать наценку или уменьшать стоимость исходя общей площади?
8. exlant - 11 Апреля, 2015 - 00:38:53 - перейти к сообщению
вот к этому
PHP:
скопировать код в буфер обмена
  1.  
  2. (int)$_POST['width']*(int)$_POST['height']
  3.  

добавить * - умножить, / - разделить, +, - и нужное число
например
PHP:
скопировать код в буфер обмена
  1. (int)$_POST['width']*(int)$_POST['height']*0.1

или
PHP:
скопировать код в буфер обмена
  1. (int)$_POST['width']*(int)$_POST['height']/10
9. mirstiker - 11 Апреля, 2015 - 00:49:52 - перейти к сообщению
exlant пишет:
вот к этому
PHP:
скопировать код в буфер обмена
  1.  
  2. (int)$_POST['width']*(int)$_POST['height']
  3.  

добавить * - умножить, / - разделить, +, - и нужное число
например
PHP:
скопировать код в буфер обмена
  1. (int)$_POST['width']*(int)$_POST['height']*0.1

или
PHP:
скопировать код в буфер обмена
  1. (int)$_POST['width']*(int)$_POST['height']/10


Спасибо за помощь! напишите,пожалуйста,условие чтобы после расчета размеры не сбрасывались в форме.
10. exlant - 11 Апреля, 2015 - 01:19:14 - перейти к сообщению
вот это в самое начало скрипта, до вывода любого html кода
PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_POST['width']) AND isset($_POST['height'])){
  3.           $_SESSION['multiple'] = (int)$_POST['width']*(int)$_POST['height'];
  4.        }
  5.  

вот так будет выглядеть форма
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form name="form_sum" method="post" action="">
  2.         <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)" />
  3.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)" />
  4.         = <input type="text" name="sum" size="4"
  5.                 value="<?=($_SESSION['multiple'])?$_SESSION['multiple']:'Цена'?>" />
  6.                                  <p>
  7.         <input type="submit" value="Рассчитать" />
  8. </p>
  9.    </form>

(Добавление)
тю, не верно с начало вопрос прочитал! Спать пора))
Вот так вот:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form name="form_sum" method="post" action="">
  2.     <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)"
  3.           value="<?=(isset($_POST['width']))?$_POST['width']:'' ?>" />
  4.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)"
  5.           value="<?=(isset($_POST['height']))?$_POST['height']:'' ?>" />
  6.         = <input type="text" name="sum" size="4"
  7.                 value="<?=(isset($_POST['width']) AND isset($_POST['height']))?(int)$_POST['width']*(int)$_POST['height']:'Цена'?>" />
  8.                                  <p>
  9.         <input type="submit" value="Рассчитать" />
  10. </p>
  11.    </form>

и без первого php кода, он не нужен!
11. mirstiker - 11 Апреля, 2015 - 01:31:18 - перейти к сообщению
exlant пишет:
вот это в самое начало скрипта, до вывода любого html кода
PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_POST['width']) AND isset($_POST['height'])){
  3.           $_SESSION['multiple'] = (int)$_POST['width']*(int)$_POST['height'];
  4.        }
  5.  

вот так будет выглядеть форма
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form name="form_sum" method="post" action="">
  2.         <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)" />
  3.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)" />
  4.         = <input type="text" name="sum" size="4"
  5.                 value="<?=($_SESSION['multiple'])?$_SESSION['multiple']:'Цена'?>" />
  6.                                  <p>
  7.         <input type="submit" value="Рассчитать" />
  8. </p>
  9.    </form>

(Добавление)
тю, не верно с начало вопрос прочитал! Спать пора))
Вот так вот:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form name="form_sum" method="post" action="">
  2.     <input type="text" name="width" size="15" maxlength="5" placeholder="Ширина (см)"
  3.           value="<?=(isset($_POST['width']))?$_POST['width']:'' ?>" />
  4.         X <input type="text" name="height" size="15" maxlength="5" placeholder="Высота (см)"
  5.           value="<?=(isset($_POST['height']))?$_POST['height']:'' ?>" />
  6.         = <input type="text" name="sum" size="4"
  7.                 value="<?=(isset($_POST['width']) AND isset($_POST['height']))?(int)$_POST['width']*(int)$_POST['height']:'Цена'?>" />
  8.                                  <p>
  9.         <input type="submit" value="Рассчитать" />
  10. </p>
  11.    </form>

и без первого php кода, он не нужен!


Жаль,что спасибо не поставить,сообщений не хватает,тогда напишу СПАСИБО exlant!
12. mirstiker - 29 Июля, 2015 - 14:54:12 - перейти к сообщению
Уважаемые программисты помогите новичку,данным скриптом доволен,но возникла необходимость его немного изменить.

При вводе размеров Д X Ш = ЦЕНА. До 0.5 кв.м стоимость отображается еще разумная,хочется уменьшать числовой коэффициент когда общая площадь превышает 0.5 квм,предполагаю,что необходимо новое условие написать.

Использую этот вариант:
Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1